2012-09-07 86 views
6

我想通过一些额外的参数到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); 
}); 

我在想,如果有更好的如何做到这一点?我以为自己已经读过一些关于更简洁的方式来传递参数,而不需要匿名封装函数,但是我不能在我的生活中记住我阅读它的地方,或者我阅读的内容。到目前为止Google搜索没有任何结果。

回答

9

为了通过你需要将它传递.resolve东西.done回调,例如

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

,但在你的情况dfd$.ajax对象和.resolve在内部调用,所以你没有控制权它。因此唯一的方法就是使用匿名函数和闭包。顺便说一句:这个解决方案没有任何不清楚的地方。

+0

好的,这可能是一个自定义的案例,我读到了程序员完成解决方案的地方。谢谢! – Asciiom