Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
252 views
in Technique[技术] by (71.8m points)

javascript - retry to load two scripts in componentdidmount

I'm trying to load two js scripts in componentdidmount and want a retry logic 4 times.

What would be the best way to handle two scripts in one function?

    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;
    }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

A second function would work here. For example with a while loop:

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)
}

Though you could do the same thing with other types of loops.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...