嵌套的异步/等待函数

4

看代码会更容易理解:

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

这段代码在第三行返回一个错误,提示附近有一个意外的符号readDir。我不明白为什么它不能工作。

1个回答

5
原来,我忘记将箭头函数声明为异步函数。
修改后的代码如下:
async function addFiles(dir,tree) {
  return (await readDir(dir))
    .map(async name => {await readDir(dir); return name;}) // error here
}

嘿,为了以后的参考,我很好奇你正在使用这个实现做什么?从“阅读它”的角度来看,似乎你正在提供一个树形结构并读取其下的目录?只是想要上下文,作为未来的示例 :-) - james emanon
没问题...我会在修复所有的错误后发布它 :) - Zane Hitchcox
据我理解,这是使用async/await进行map的次优方法。如果您使用await Promise.all,则可以利用更多的并行处理。我创建了一个伪代码jsfiddle来说明我认为的您的用例:https://jsfiddle.net/ry93b8r3/ - Brandon
请问您能否接受自己的答案呢?这样做将有助于未来阅读该问题的其他人。谢谢(并点个赞;-))。 - Mawg says reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接