如何在匿名函数中引用AJAX请求对象

时间:2013-05-01 18:53:18

标签: javascript jquery settimeout

我使用$.ajax()中的JQuery方法来执行一些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()中定义的对象。

1 个答案:

答案 0 :(得分:1)

临时变量很好。要稍微缩短通话时间,您可以使用bind function method

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

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

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