【问题标题】:Pass extra parameters to jquery.Deferred callback将额外参数传递给 jquery.Deferred 回调
【发布时间】:2012-09-07 09:00:45
【问题描述】:

我想将一些额外的参数传递给 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);
});

我想知道是否有更好的方法来做到这一点?我以为我在某处读到过一种无需匿名包装函数即可传递参数的更简洁的方法,但我终其一生都记不起我在哪里读过它,或者我读到了什么。到目前为止,Google 搜索一无所获。

【问题讨论】:

    标签: javascript jquery callback jquery-deferred


    【解决方案1】:

    例如,为了向.done 回调传递一些东西,您需要在.resolve 中传递它

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

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

    顺便说一句:这个解决方案没有什么不干净的地方。

    【讨论】:

    • 好极了,这可能是我读到的一个自定义案例,关于程序员在哪里完成解析。谢谢!
    猜你喜欢
    • 2012-01-04
    • 2017-04-09
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    相关资源
    最近更新 更多