首页 > 解决方案 > 重试在 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;
    }

标签: javascriptreactjs

解决方案


第二个功能将在这里工作。例如使用 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)
}

尽管您可以对其他类型的循环执行相同的操作。


推荐阅读