我试图在点击按钮时调用多个函数,这些函数都返回一个承诺。当所有这些都完成后,应该会发生一些事情(本例中只是一个简单的 location.reload()
).
我的代码在Chrome浏览器中工作得很好,但是在Safari和MS Edge中,它会将所有函数添加到 promises
数组,然后在它们完成之前重新加载。
这是我的代码
button.addEventListener('click', function() {
this.classList.add('disabled');
let promises = [];
let total_qty = 0;
for (var variant of registrered_variants) {
promises.push(
FunctionThatReturnsAPromise();
)
total_qty += variant.qty
}
// reload page when all functions ran.
Promise.all(promises).then(() => location.reload());
});
承诺链实际上是按预期工作的。问题出在我的 FunctionThatReturnsAPromise()
功能...