0

我使用$.ajax()方法 fromJQuery做一些 POST 请求,在它的error: function(jqXHR, textStatus, errorThrown) { ... }回调中,我想实现一个简单的超时重试机制,例如

timeout = window.setTimeout(function() {
    $.ajax(myReqOptions);
}, 3000);

myReqOptions这里需要是我定义的选项对象$.ajax()才能使这项工作。除了在调用超时之前设置临时变量之外,是否有一种方便的方法来引用此对象,如下所示:

myReqOptions = this;
timeout = window.setTimeout(function() {
    $.ajax(myReqOptions);
}, 3000);

this这里指的是error回调的所有者,也就是我在$.ajax().

4

1 回答 1

1

临时变量很好。要稍微缩短调用时间,您可以使用bind函数方法

timeout = window.setTimeout($.ajax.bind($, this), 3000);

或者,为了与旧浏览器兼容(不使用 ES5 shim),使用$.proxy

timeout = window.setTimeout($, "ajax", this), 3000);
于 2013-05-01T19:02:40.417 回答