![]() |
1
2
.find()函数是异步的,因此当您仍在查找元素的过程中,foreach循环本身将继续运行。最后你会等待你的.find()。 您所能做的是在.then()回调中,检查当前foreach项的索引,如果您是最后一个项,那么我们知道所有承诺都已返回。所以在那里调用allprogress函数。 这应该让足够的时间来等待所有事情的结合。此外,通过检查索引,我们知道我们只会在完成时调用AllPromises函数。每个foreach循环不会出现多次。
编辑: 您的mcve(最新编辑)失败的原因完全相同。您的请求是异步的,它允许循环在不等待的情况下进行。再次检查索引,完成后调用。
|
![]() |
2
0
myCollection.find(id:idx)是异步操作。 所以你可以喜欢这样:
|
![]() |
tomography · 更改承诺类型 2 年前 |
![]() |
Aristocles · 许诺抛出错误后是否继续执行所有提取? 2 年前 |
![]() |
Centurion22 · 异步函数内的异步映射函数未定义响应数据 2 年前 |
![]() |
Scott Thiessen · 完成后逃离承诺链[重复] 6 年前 |
|
adcomptyler · 向Twilio视频快速启动添加静音按钮 6 年前 |
![]() |
JWiley · 带有FileReader的Promise函数过早解析 6 年前 |
![]() |
John Lippson · 在所有异步函数完成后执行函数? 6 年前 |
![]() |
ctf0 · 解析嵌套承诺后运行函数 6 年前 |