我有一个带有几种不同类型数据结构的.JSON,我用一组for循环迭代,每个for循环都有一个异步函数在它上面运行 - 即在SQLite数据库上插入 - 但我想要等到所有for循环的所有插入都完成。这是一个这样的循环:
for (let i = 0; i < data.json().products.length; i++) {
this.product.addItem(data.json().products[i]);
}
这是addItem函数:
addItem(product){
this.productsSQL.query('INSERT INTO ...').then((data) => {
...
}, (error) => {
...
});
}
我想我必须将addItem更改为:
addItem(product){
return this.productsSQL.query('INSERT INTO ...').then((data) => {
return true;
}, (error) => {
return false;
});
}
然后每个循环我需要使用promise.all()但是我还需要一个将所有循环放在一起的promise.all()?
答案 0 :(得分:1)
基本上创建一个promises数组并将代码更新为以下代码:
var promises = [];
for (let i = 0; i < data.json().products.length; i++) {
promises.push(this.product.addItem(data.json().products[i]));
}
Promise.all(promises).then((data) => {
return true;
}, (error) => {
return false;
});
让addItem返回一个承诺:
addItem(product){
return this.productsSQL.query('INSERT INTO ...');
}