6

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 検索では、これまでのところ何も見つかりませんでした。

4

1 に答える 1

10

コールバックに何かを渡すには、たとえば、で.done渡す必要があります.resolve

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

しかし、あなたの場合dfd$.ajaxオブジェクトで.resolveあり、内部的に呼び出されるため、それを制御することはできません. したがって、それを行う唯一の方法は、無名関数とクロージャーを使用することです。

ところで、このソリューションには汚れはありません。

于 2012-09-07T10:20:23.000 に答える