将额外的参数传递给jquery.Deferred回调

时间:2012-09-07 09:00:46

标签: javascript jquery callback jquery-deferred

我想将一些额外的参数传递给jQuery.Deferred完成的回调,我现在这样做:

//dfd gets defined here as the return value of jQuery.ajax

var me = this;
var selector = $("#selector");

dfd.done(function(response){
    me.updated(response, selector);
});

我想知道是否有更好的方法来做到这一点?我以为我已经阅读过一些关于传递参数的更简洁方法,而不需要匿名包装函数,但我不能为我的生活记住我在哪里阅读,或者我读到的内容。到目前为止谷歌搜索没有发现任何事情。

1 个答案:

答案 0 :(得分:10)

要将内容传递给.done回调,您需要在.resolve中传递,例如

dfd.done( function(selector) {
   console.log( selector );
});
dfd.resolve( selector );

但在您的情况下,dfd$.ajax对象,内部调用.resolve,因此您无法控制它。因此,唯一的方法是使用匿名函数和闭包。

顺便说一下:这个解决方案没有什么不洁净的。