1

我有一种情况,我想在部署后触发对 chunk.js 等资产的重试,如果失败,这样用户就不会看到空白屏幕。为此我做了什么:

export const retry = (fn, retriesLeft = 5, interval = 1000) => new Promise((resolve, reject) => {
  fn()
    .then(resolve)
    .catch((error) => {
      if (retriesLeft === 0) {
        // reject('maximum retries exceeded');
        reject(error);
        return;
      }
      setTimeout(() => {
        // Passing on "reject" is the important part
        retry(fn, retriesLeft - 1, interval).then(resolve, reject);
      }, interval);
    });
});

const SomeComponent = React.lazy(() => retry(() => import('someComponent')));

现在,当任何 chunk.js 加载失败时,这与 Chrome 完美配合,因为它命中 5 次。(阻止来自开发工具的任何 chunk.js 调用以观察本地行为)

但是对于 IE 11,重试根本不会发生。请解释为什么它会这样。

参考

4

0 回答 0