是否有必要中止AJAX超时?

时间:2014-08-10 16:29:43

标签: jquery

我有一个2秒超时的ajax GET请求。如果请求超时,我不希望请求仍然挂在那里。 2秒钟,我只是想阻止一切。

我想知道是否有必要在达到超时时调用abort(),或者是否达到超时阈值会自动中止所有内容......?

request = $.ajax({
            type: 'GET',
            url: url,
            timeout: 2000, 
            success: function (data) {

                // do some stuff

            },
            error: function(x, t, m) {

                if(t==="timeout") {
                    request.abort(); // is this necessary?
                    // do some other stuff

                } // end if timeout
            } // end error function
        }); // end ajax 

1 个答案:

答案 0 :(得分:5)

不,没有必要。在内部,当超时被命中时,jQuery将abort为您提供XHR。

如果您查看source of $.ajax,可以看到此操作:

// Timeout
if (s.async && s.timeout > 0) {
    timeoutTimer = setTimeout(function () {
        jqXHR.abort("timeout");
    },
    s.timeout);
}