Lösen das Versprechen ein Objekt mit einem "dann" - Funktion

Dies ist eine etwas abstrakte Frage, denn ich habe nicht einen bestimmten use-case jetzt. Ich habe bemerkt, dass, wenn Sie lösen ein Versprechen ein Versprechen

var deferredA = $q.defer();
var deferredB = $q.defer();
deferredA.promise.then(function(result) {
  //Will get here once promiseB has been resolved.
});
deferredA.resolve(deferredB.promise);

als promiseA nicht wirklich gelöst werden, bis die promiseB gelöst (und dann promiseA behoben ist mit dem Wert von promiseB Auflösung). Was aber, wenn ich wollte, zu beheben mit einem Wert ein Objekt mit einem "dann" - Funktion, wie:

var deferred = $q.defer();
deferred.promise.then(function(result) {
  //Aim is to get here with result = {then:function(){}},
  //as though I had resolved a promise with a non-promise value,
  //but this function is never called
});
deferred.resolve({
  then: function() {
  }
});

dann promiseA eigentlich nie aufgelöst wird, als es davon ausgegangen, dass der Wert ist ein Versprechen, auch wenn in dem Beispiel oben ist es nicht wie in, es wurde nicht erstellt, mit $q.defer(). Es ist ein Beispiel plunkr bei

http://plnkr.co/edit/Z8XUKzxHtGBKBmgPed2q?p=preview

Gibt es eine Möglichkeit, um dieses? Wenn ja, wie?

Bearbeiten: geklärt latente/Versprechen & setzen Sie im Beispiel "dann" - callbacks.

entfernen Sie dann die Funktion aus dem Objekt vor dem Aufruf auflösen, und wieder neu hinzufügen?
Ziel ist es, in der Lage zu lösen, die Versprechen, mit ein Objekt mit einer "dann" - Funktion. Die Funktion nutzen wollen, die mit der aufgelösten Wert das Versprechen möglicherweise in einem ganz anderen Teil des Codes zu generieren + Lösung Versprechen, so dass ich nicht denke, das wäre wirklich möglich.
Hmm. Das ist interessant, dass es nicht erkennt eine Instanz von $q.defer().promise. Vielleicht ist das ein bug...

InformationsquelleAutor Michal Charemza | 2013-12-08

Schreibe einen Kommentar