等待's返回Promise而不是value

Asynchronous map function that await's returns Promise instead of value

本文关键字:value Promise 返回 等待      更新时间:2023-09-26

我有这个代码

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

但不幸的是,它只返回了一堆promise,因为map中的async函数没有被等待。我想知道是否有任何方法可以等待上面代码中的映射函数。

尝试

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

如果你使用的是bluebird,你可以在Promise.map 中使用这种更干净、更短的语法

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