有没有一种方法可以在异步函数中等待多个等待调用?

时间:2020-10-10 22:29:22

标签: node.js express mongoose async-await

此函数读取我所有的Movie文档并解析某些属性;在我的Person Collection中创建新文档。

enter image description here

错误消息:-------------------------------------------- ----

等待Person.create({ ^^^^^ SyntaxError:await仅在异步功能中有效

2 个答案:

答案 0 :(得分:0)

结帐Promise.all()https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise/all 它使您可以等待多个承诺。

答案 1 :(得分:0)

修改
正如@ jfriend00 Array.forEach expects a synchronous function所指出的,它不处理Promises / async / await。要使用异步和等待,您应该将Array.forEach的所有用法替换为for循环:

for (const movie of movieObj) { ... }

关于等待多个异步调用,如果您希望这些调用真正是异步的,而不是等待每个单独的调用,则可以使用Promise.all在异步调用的 array 上等待。由于它接受一个承诺数组,因此您将要使用Array.map。例如,您可以这样做:

await Promise.all(arrayWriters.map((el) => Person.create(...)));