【发布时间】:2022-09-25 15:58:44
【问题描述】:
我正在学习 Node.js。
我必须在Promise.all() 循环中调用异步函数work(),并且必须在继续执行Promise.all() 之后的语句之前完成它。
目前,它在完成work() 之前达到FINISH 状态。
让代码等待 work() 函数完成的正确方法是什么?
const promise1 = Promise.resolve(1);
const promise2 = Promise.resolve(2);
const promise3 = Promise.resolve(3);
async function work() {
await new Promise((resolve, reject) => {
setTimeout(resolve, 2000, \'foo\');
})
console.log(\'some work here\')
}
async function main() {
await Promise.all([promise1, promise2, promise3]).then((values) => {
values.forEach(function(item) {
console.log(item)
work()
});
});
console.log(\'FINISH\')
}
main()
-
为什么用已经解析的
Promises 数组调用Promise.all()?这没有多大意义... -
您的所有 3 个承诺都已解决。不要混搭
await和then... -
您需要从
work()返回承诺并在then()中调用以下功能 - 与promiseN完全相同。话虽如此,promiseN似乎完全多余,因为您在致电Promise.all()之前已经解决了它们...?我认为这只是一个人为的演示示例? -
最初的 [promise1, promise2, promise3] 承诺块只是为了说明,我正在那里下载一些文件,目标是在下载完所有文件后对这些文件进行一些操作。
-
\"只是为了说明......对那些文件做一些操作\"- 然后在问题中写下,因为现在您的示例没有做任何有用的事情(
Promise.all()和忽略items 的work()调用都没有,因此您的脚本与work(); work(); work();的作用相同做)
标签: javascript node.js async-await promise