是否可以从promise notify
回调中返回任何内容?
在以下代码中,ServiceB.Start
返回延迟保证,其中延迟是在ServiceB
上定义的:
ServiceB.Start(action).then(
function() {console.log("Success");},
function() {console.log("Failed");},
function (notifyObject) {
var deferred = $q.defer();
//do something time consuming
$timeout(function() {
if (notifyObject.success) {
deferred.resolve({ message: "This is great!" });
} else {
deferred.reject({ message: "Really bad" });
}
}, 5000);
console.log(notifyObject.message);
return deferred.promise;
}
);
var notifyReturnValue = ServiceB.deferred.notify(notifyObject);
notifyReturnValue.then(
function() {
//do something else
ServiceB.deferred.resolve(data);
}
);
}
notifyReturnValue
似乎未定义。有没有办法从deferred.notify()
返回一些内容?
答案 0 :(得分:1)
是的,您可以从notify
回调中返回一个值。它类似于从成功/错误回调中返回值。 返回的值会传递到下一个notify
回调线。但是,正如the documentation所述,您无法影响notify
回调的解析/拒绝。这是有道理的,因为notify
可能被多次调用,而承诺可能只被解决/拒绝一次。
当您致电then
时,您会收到一个新的Promise
。这是因为它是链接异步操作的一种方式。当不仅原始操作,而且传递到then
(也可以是异步)的回调被解析时,新的承诺得到解决。
See this demo传递通知值(打开控制台)。