gpt4 book ai didi

javascript - ionic 检查多个 Promise 是否完成

转载 作者:行者123 更新时间:2023-11-28 17:41:58 26 4
gpt4 key购买 nike

我想运行多个 promise 并在所有 promise 完成时打印结果。目前我尝试以下方法:

for (let p of this.invoiceProduct) {
this.promotionSvc.checkPromoBuyNGetN(this.username, p).then(result => {
console.log(result);
this.promoBuyNGetNData.push(result);
})
}

Promise.all(this.promoBuyNGetNData).then(values => {
console.log(values);
})

在控制台中,它打印 console.log(values)[]{id: "e620c8a8-dca8-11e7-8443-2c56dcbcb038",productIdGet:“98926f8c-6afb-11e7-8dd4-2c56dcbcb038”,productGet:“Style Laki”,getN:1,描述:console.log(结果)的“”}

从上面的结果我们可以看到 Promise.all 不起作用。我该如何解决这个问题?

最佳答案

Promise.all 需要一个 Promise 数组。您需要更改 for 循环以将 promise 放入 this.promoBuyNGetNData 中。如果我理解正确的话,这段代码应该做你想要的。

for (let p of this.invoiceProduct) {
const promise = this.promotionSvc.checkPromoBuyNGetN(this.username, p);
promise.then(result => {
console.log(result);
});
this.promoBuyNGetNData.push(promise);
}

Promise.all(this.promoBuyNGetNData).then(values => {
console.log(values);
});

您可以通过删除 promise.then 控制台日志并将 for 循环转换为映射来使此更清晰。

this.promoBuyNGetNData = this.invoiceProduct.map(p => this.promotionSvc.checkPromoBuyNGetN(this.username, p));
Promise.all(this.promoBuyNGetNData).then(values => {
console.log(values);
});

关于javascript - ionic 检查多个 Promise 是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47726492/

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