2016-05-02 74 views
2

它更容易只是为了看看代码:嵌套异步/等待功能

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

此代码返回第3行的错误,说有近readDir一个意外标记。我不明白为什么这不起作用。

回答

3

事实证明,我忘了将我的箭头函数声明为异步。

修改后的代码是

async function addFiles(dir,tree) { 
    return (await readDir(dir)) 
    .map(async name => {await readDir(dir); return name;}) // error here 
} 
+0

哎,以供将来参考,我很好奇的实现您正在使用此为了什么?从“阅读它”,看起来你正在给一个树结构并阅读它下面的目录?只是寻找上下文,作为未来的例子:-) –

+0

当然......当我完成所有错误时,我会发布它:) –

+0

据我了解,这是一个不理想的方式来做'map '用'async/await'。如果你'等待'一个'Promise.all',你可以使用更多的并行处理。我做了一个伪代码jsfiddle来说明如何使用我认为是你的用例:https://jsfiddle.net/ry93b8r3/ – Brandon