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

Javascript 如何在匿名函数中引用AJAX请求对象,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我使用JQuery中的$.ajax()方法来执行一些POST请求,在它的error:function(jqXHR,textStatus,errorshown){…}回调中,我想实现一个带有超时的简单重试机制,例如 timeout = window.setTimeout(function() { $.ajax(myReqOptions); }, 3000); myReqOptions这里需要我在$.ajax()中定义的options对象来实现这一点。除了在调用超时之前设置temp变量外,

我使用
JQuery
中的
$.ajax()
方法来执行一些POST请求,在它的
error:function(jqXHR,textStatus,errorshown){…}
回调中,我想实现一个带有超时的简单重试机制,例如

timeout = window.setTimeout(function() {
    $.ajax(myReqOptions);
}, 3000);
myReqOptions
这里需要我在
$.ajax()
中定义的options对象来实现这一点。除了在调用超时之前设置temp变量外,是否有一种方便的方法来引用此对象,如下所示:

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

此处指的是
错误
回调的所有者,该回调是我在
$.ajax()中定义的对象。temp变量很好。要将通话缩短一点,您可以使用:

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


“我在
$.ajax
中定义的对象”-我没有看到任何对象(文字?)定义,您只使用了
myReq
变量?您也可以从错误回调中引用该变量。您可以使用$.proxy或Function.bind,但只使用该临时变量更简单。@Bergi
在本例中是传递给原始的
$.ajax
的选项对象,我们位于错误处理程序中。哦,该代码已经是错误回调主体了吗?然后就可以了(只使用一个局部变量,
var myReq=…
)。
timeout = window.setTimeout($.ajax.bind($, this), 3000);
timeout = window.setTimeout($, "ajax", this), 3000);