Разрешить обещание с помощью объекта «тогда»
Это немного абстрактный вопрос, так как у меня сейчас нет конкретного варианта использования. Я заметил, что если вы решите обещание с обещанием
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);
чем обещание на самом деле не разрешено, пока обещание не разрешено (и затем обещание разрешено со значением разрешения обещания). Однако, что если бы я хотел разрешить значение объекта с помощью функции «then», например:
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() {
}
});
затем обещание на самом деле никогда не разрешается, поскольку предполагается, что значение является обещанием, хотя в приведенном выше примере это не так, как, например, оно не было создано с помощью $ q.defer (). Есть пример планкр на
http://plnkr.co/edit/Z8XUKzxHtGBKBmgPed2q?p=preview
Это можно обойти? Если да, то как?
редактировать: уточнил отложенные / обещать и положить в пример "тогда" обратные вызовы.