簡體   English   中英

使用XMLHttpRequest Timeout

[英]Using XMLHttpRequest Timeout

因此,當數據請求超時時,我嘗試使用XMLHttpRequest的timeout屬性來“恢復”我的程序。 基本上如果它無法檢索數據,我希望它再試一次。 目前我的代碼看起來像這樣(刪除了完整的URL,以便整齊地適應它):

    function pullRequest(){

        var xhr = new XMLHttpRequest()

        xhr.onreadystatechange = function() {
            if (this.readyState === 4) {
                jsonDecode = this.responseText;
                json = JSON.parse(jsonDecode);
                ask = (json.result.Ask);
                bid = (json.result.Bid);
            }
        }

        xhr.open("GET","<URL>",true);
        xhr.send(); 
}

我並沒有完全遵循如何實現超時屬性,或者它是否會按照我想要的方式執行。 我在xhr.open之后添加了以下兩行,但它拋出並出現錯誤:

        xhr.timeout = 5000;
        xhr.ontimeout = pullRequest()

如果它超時,基本上在我腦海中,再次運行pullRequest函數。 我敢肯定這可能不是一個好主意,但我沒有足夠的經驗知道為什么。 對於它的價值,錯誤的片段如下:

...\node_modules\xmlhttprequest\lib\XMLHttpRequest.js:165
    settings = {
    ^

RangeError: Maximum call stack size exceeded at exports.XMLHttpRequest.open 

任何關於如何實現我的目標的建議,或者一些能夠幫助我的文獻都將受到高度贊賞。

謝謝!

問題是你在調用 pullRequest

xhr.ontimeout = pullRequest()
// ------------------------^^

因為它立即調用自身,然后再次調用自身,並再次調用自身等,最終當達到環境的最大遞歸級別時,它會耗盡堆棧。

你不想在那里調用它,你只想將函數引用分配給ontimeout這樣如果超時發生,你的函數會被調用:

xhr.ontimeout = pullRequest
// No () ------------------^

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM