javascript - 重试在 componentdidmount 中加载两个脚本
问题描述
我正在尝试在 componentdidmount 中加载两个 js 脚本并想要重试逻辑 4 次。
在一个函数中处理两个脚本的最佳方法是什么?
function loadScript(scriptUrl1, scriptUrl2, retries = 4) {
const getScript= document.createElement("script");
getScript.onerror = () => {
if (retries > 0) {
loadScript(scriptUrl1, scriptUrl2, retries - 1);
} else {
console.log("failed to load")
}
}
script1.src = scriptUrl1;
script2.src = scriptUrl2;
}
解决方案
第二个功能将在这里工作。例如使用 while 循环:
function loadScript(scriptUrl1, scriptUrl2, retries = 4) {
function loadScriptLoop(url) {
while (retries > 0) {
const getScript = document.createElement("script")
getScript.onerror = () => {
if (retries > 0) {
retries--
continue
} else {
console.log("failed to load")
break
}
}
getScript.src = url
}
}
;[scriptUrl1, scriptUrl2].forEach(loadScriptLoop)
}
尽管您可以对其他类型的循环执行相同的操作。
推荐阅读
- python - 当 pd.DataFrame 到 SQL Server INSERT 时,日期时间令人困惑
- drupal - Drupal 8 - 获取具有部分 URL 别名的所有节点
- .net-core - dotnet restore 不会将文件复制到 azure devops 上的 outdir,适用于 vs
- android - Android:使用设备策略管理器授予 SET_TIME 权限作为设备所有者
- jestjs - Jest puppeteer typescript reference error 找不到页面
- javascript - NodeJS Express Route 不适用于表单操作
- amazon-web-services - 通过 terraform 和 gitlab yml 脚本对 AWS Lambda 进行版本控制
- python - 如何在不停止其他人的情况下时时运行 Functions?
- shell - 如何使生成文件能够转义通配符大括号
- javascript - 如何处理回调?