web-dev-qa-db-ja.com

待機する非同期マップ関数が値ではなくPromiseを返す

私はこのコードを持っています

async function addFiles(dir,tree) {
  return (await readDir(dir))
    .map(async (name) => {await readDir(dir); return name;})
}

しかし残念ながら、mapのasync関数が待機されていないため、一連のpromiseが返されます。上記のコードでマップされた関数を待機する方法があるかどうか疑問に思っています。

12
Zane Hitchcox

試す

async function addFiles(dir,tree) {
  const files = await readDir(dir)
  await Promise.all(files.map(async (name) => {await readDir(dir); return name;})
}
39
Sitian Liu

Bluebirdを使用している場合は、 Promise.map を使用して、より簡潔で短い構文を使用できます。

async function addFiles(dir, tree) {
  const files = await readDir(dir);
  return Promise.map(files, async (name) => { await readDir(dir); return name; });
}
2
Gaafar