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; });
}
Author by
Zane Hitchcox
Updated on June 16, 2022Comments
-
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.