Angularjs 是否可以从承诺通知回调返回值?
是否可以从promiseAngularjs 是否可以从承诺通知回调返回值?,angularjs,Angularjs,是否可以从promisenotify回调返回任何内容 在以下代码中,ServiceB.Start返回延迟承诺,其中延迟承诺在ServiceB上定义: ServiceB.Start(action).then( function() {console.log("Success");}, function() {console.log("Failed");}, function (notifyObject) { var d
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
似乎未定义。是否有方法从延迟.notify()
返回某些内容?是的,您可以从通知
回调返回值。它的工作原理类似于从成功/错误回调返回值返回的值将传递给行中的下一个notify
回调。但是,正如所述,您不能影响notify
回调的解决/拒绝。这是有意义的,因为可以多次调用notify
,而承诺只能被解析/拒绝一次
当你调用然后
时,你会得到一个新的承诺
。这是因为它是链接异步操作的一种方法。当不仅解决了原始操作,而且还解决了传递到然后的回调(也可以是异步的)时,就会解决新的承诺
传递通知值(控制台打开时)。我在notify中调用的deferred.resolve是在notifyCallback本身中定义的本地延迟,而不是调用notify的本地延迟。这是当地的延迟。我保证我会回来的。但是,猜猜我尝试做的不会起作用,因为返回值将只传递给第行中的下一个notify回调。我可以把我所有的承诺连在一起。然而,我试图将责任封装到不同的控制器,而不是将它们混淆。通知通道只是一种通知侦听器操作进度的方式。它不应该被用于其他任何事情。使用其他模式(如事件)进行组件之间的其他交互。