gpt4 book ai didi

javascript - 如何知道循环内的 promise 是否已经结束?

转载 作者:行者123 更新时间:2023-12-02 19:36:15 26 4
gpt4 key购买 nike

首先,如果这是一个基本问题,我很抱歉,但我无法做到这一点。我有一个将数据插入表(sqlite)的 promise ,并且我有一个用于迭代数组的 promise 。我想将所有数据放入表中,但我想知道它何时结束,以在最后显示一条消息。我正在验证 (i == array.length -1) 它显示了该消息,但这似乎不正确。如果我不以这种方式执行此操作,则消息会在结束之前显示。我还有另外两个 promise 应该沿着这个 promise 运行,并且上面的解决方案(这似乎是一个糟糕的解决方案)在这种情况下不起作用,因为一个可以在迭代之后或之前结束。我怎么知道它们什么时候也完成了?请问你能帮帮我吗?

这是我的代码:


for (let i = 0; i < this.data_array.length; i++) {
this.database.insertService(this.data_array[i]).then(async () => {
console.log('Inserting object number ' + this.data_array[i].id);
if( i == this.data_array.length - 1) {
console.log('done!');
}
}).catch(err => console.log('error inserting object into the table'));
}

谢谢。

最佳答案

使用 Promise.all 是更好的做法在处理此类案件时。一个简单的例子如下:

let i;
let promises = [];
for (i = 0; i < 5; ++i)
promises.push(someAsyncFunc(i));

Promise.all(promises)
.then((results) => {
console.log("All done", results);
})
.catch((e) => {
console.log(e)
});

关于javascript - 如何知道循环内的 promise 是否已经结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61020306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com