Angularjs 是否可以从承诺通知回调返回值?

Angularjs 是否可以从承诺通知回调返回值?,angularjs,Angularjs,是否可以从promisenotify回调返回任何内容 在以下代码中,ServiceB.Start返回延迟承诺,其中延迟承诺在ServiceB上定义: ServiceB.Start(action).then( function() {console.log("Success");}, function() {console.log("Failed");}, function (notifyObject) { var d

是否可以从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
似乎未定义。是否有方法从
延迟.notify()
返回某些内容?

是的,您可以从
通知
回调返回值。它的工作原理类似于从成功/错误回调返回值返回的值将传递给行中的下一个
notify
回调。
但是,正如所述,您不能影响
notify
回调的解决/拒绝。这是有意义的,因为可以多次调用
notify
,而承诺只能被解析/拒绝一次

当你调用
然后
时,你会得到一个新的
承诺
。这是因为它是链接异步操作的一种方法。当不仅解决了原始操作,而且还解决了传递到
然后
的回调(也可以是异步的)时,就会解决新的承诺


传递通知值(控制台打开时)。

我在notify中调用的deferred.resolve是在notifyCallback本身中定义的本地延迟,而不是调用notify的本地延迟。这是当地的延迟。我保证我会回来的。但是,猜猜我尝试做的不会起作用,因为返回值将只传递给第行中的下一个notify回调。我可以把我所有的承诺连在一起。然而,我试图将责任封装到不同的控制器,而不是将它们混淆。通知通道只是一种通知侦听器操作进度的方式。它不应该被用于其他任何事情。使用其他模式(如事件)进行组件之间的其他交互。