2016-05-02 5 views
9

У меня есть этот кодАсинхронный карту функция, которая ждет возвращает Обещай вместо значения

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

, но, к сожалению, он просто возвращает кучу обещаний, потому что функция асинхронной на карте не прислуживали. Мне интересно, есть ли способ дождаться отображаемой функции в приведенном выше коде.

+3

Я считаю, 'вернуть Promise.all ((ждать READDIR (реж)). map (...)); 'должен работать. Не уверен, что это должно быть 'await Promise.all (...)'. –

+0

Хорошее мышление! Благодаря! –

ответ

29

попробовать

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

Если вы используете Блюберды вы можете использовать этот пылесос, короткий синтаксис с Promise.map

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

Как это короче? – Stephen

Смежные вопросы