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

12,927

Solution 1

try

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

Solution 2

If you're using bluebird you can use this cleaner, shorter syntax with Promise.map

async function addFiles(dir, tree) {
  const files = await readDir(dir);
  return Promise.map(files, async (name) => { await readDir(dir); return name; });
}
Share:
12,927
Zane Hitchcox
Author by

Zane Hitchcox

Updated on June 16, 2022

Comments

  • Zane Hitchcox
    Zane Hitchcox about 2 years

    I have this code

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

    but unfortunately, it just returns a bunch of promises, because there the async function in map is not waited upon. I'm wondering if there is any way to await the mapped function in the above code.