Promises.all()在Edge和Safari中的行为很奇怪。

问题描述 投票:0回答:1

我试图在点击按钮时调用多个函数,这些函数都返回一个承诺。当所有这些都完成后,应该会发生一些事情(本例中只是一个简单的 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());
  });
javascript promise es6-promise
1个回答
0
投票

承诺链实际上是按预期工作的。问题出在我的 FunctionThatReturnsAPromise() 功能...

© www.soinside.com 2019 - 2024. All rights reserved.