为什么承诺是这样解决的?(使用通知回调)



我正在使用angular检查Stomp Chat客户端的代码,开发人员创建了一个返回承诺的服务caledreceive。然后在 contoller 中,它解决了承诺,但是......我不明白结构。

ChatService.receive().then(null, null, function(message) {
$scope.messages.push(message);
});

据我了解,当时有两个参数,onSuccess 函数和 onError 函数。那么为什么前两个为空,而第三是处理成功的那个呢?如果我需要处理错误,我该怎么做?

第三个参数是notifyCallBack函数。

从文档中:

承诺 API

方法

  • then(successCallback, [errorCallback], [notifyCallback])– 无论承诺何时解决或将要解决或拒绝,一旦结果可用,就会异步调用其中一个成功或错误回调。使用单个参数调用回调:结果或拒绝原因。此外,在解决或拒绝承诺之前,可以调用零次或多次通知回调以提供进度指示。

    此方法返回一个新的承诺,该承诺通过successCallback的返回值解析或拒绝,errorCallback(除非该值是承诺,在这种情况下,它使用使用该承诺链接在该承诺中解析的值进行解析)。它还通过notifyCallback方法的返回值进行通知。无法从notifyCallback方法解析或拒绝承诺。errorCallbacknotifyCallback参数是可选的。

— AngularJS $q Service API Reference (The Promise API)

注意:

承诺通知不能很好地组成1,并且不是 ES6 承诺的一部分。相反,请考虑使用在 Angular 2+ 中广泛使用的 rxJS 可观察量,并为未来提供更好的路径。

最新更新