jQuery.Deferred (). alors, comment résoudre avec plusieurs paramètres

Donc mon API s'attend à ce que, lorsqu'un particulier différé est résolu, il obtient 2 params.

fn().done(function(arg1, arg2) {
  console.log(arg1, arg2);
}).fail(function(err) {
  console.error(err);
});

Maintenant concernant le fn fonction ci-dessus, il doit d'abord attendre que certains autres reporté à retourner avant de la résoudre.

function other() {
  //stubbed out to always resolve
  return $.Deferred().resolve().promise();
}

function fn() {
  return other().then(function() {
    return [1, 2];
  });
}

Mais ce n'est pas de travail, parce que arg1 viendra comme [1, 2] et arg2 sera undefined. Je ne peux pas comprendre comment revenir à quelque chose de Deferred.then() premier succès filtre argument de fonction, de sorte que les canalisations différés résout avec plusieurs arguments.

Bien sûr, je peux le faire:

function fn() {
  var done = $.Deferred();
  other().done(function(){
    done.resolve(1, 2);
  }).fail(function(){
    done.reject.apply(done, arguments);
  });
  return done.promise();
}

Mais qui n'est pas aussi élégant que l'utilisation de .then() et j'ai maintenant besoin de vous soucier de l'négatifs cas d'échec de l'API à chaque fois même si je sais que je suis simplement la tuyauterie de la rejetée de l'état à travers.

Et oui, je pourrais aussi changer fn() api pour résoudre avec un tableau, mais je suis vraiment en espérant y est une solution élégante à ce.

source d'informationauteur codefactor