向jquery.Deferred回调函数传递额外参数

6

我想向jQuery.Deferred的done回调函数传递一些额外的参数,现在我是这样做的:

//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个回答

10

为了将某些内容传递到.done回调中,您需要在.resolve中传递它,例如:

dfd.done( function(selector) {
   console.log( selector );
});
dfd.resolve( selector );
但在你的情况下,dfd 是一个 $.ajax 对象,并且 .resolve 是在内部调用的,所以你无法控制它。因此,唯一的方法是使用匿名函数和闭包。
顺便说一下:这种解决方案没有任何问题。

好的,很可能是我读到过的一种定制情况,解决方法是由程序员完成的。谢谢! - Asciiom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接