Передайте дополнительные параметры jquery.Отложенный обратный вызов

Я хочу передать некоторые дополнительные параметры jQuery.Отложенный обратный вызов, я делаю это так:

//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 пока ничего не обнаружили.

1 ответов


для того, чтобы что-то передать .done обратный вызов вам нужно передать его в .resolve, например

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

но в вашем случае dfd - это $.ajax объект и .resolve вызывается внутренне, поэтому у вас нет контроля над ним. Поэтому единственный способ сделать это-использовать анонимные функции и замыкания.

кстати: в этом решении нет ничего нечистого.