等待' s的异步映射函数返回Promise而不是value

时间:2016-05-02 22:25:29

标签: javascript async-await babeljs arrow-functions

我有这段代码

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

但不幸的是,它只返回了一堆承诺,因为没有等待map中的异步函数。我想知道是否有办法等待上面代码中的映射函数。

2 个答案:

答案 0 :(得分:38)

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

答案 1 :(得分:2)

如果您正在使用蓝鸟,则可以使用Promise.map

更清晰,更短的语法
async function addFiles(dir, tree) {
  const files = await readDir(dir);
  return Promise.map(files, async (name) => { await readDir(dir); return name; });
}