我有一种情况,我想在部署后触发对 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,重试根本不会发生。请解释为什么它会这样。