首页 文章

承诺为何如此解决? (使用通知回调)

提问于
浏览
0

我正在使用angular检查Stomp Chat客户端的代码,并且开发人员创建了一个服务caled receive ,它返回一个promise . 然后在控制器中,它解决了承诺,但......我不理解结构 .

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

据我所知,then有两个参数,onSuccess函数和onError函数 . 那么为什么前两个null和thrid是处理成功的那个?如果我需要处理错误,我怎么能这样做?

1 回答

  • 1

    第三个参数是 notifyCallBack 函数 .

    来自Docs:

    然后是Promise API方法(successCallback,[errorCallback],[notifyCallback]) - 无论何时或将要解析或拒绝承诺,只要结果可用,就会异步调用其中一个成功或错误回调 . 使用单个参数调用回调:结果或拒绝原因 . 另外,在解决或拒绝承诺之前,可以将通知回调调用零次或多次以提供进度指示 . 此方法返回一个新的promise,它通过successCallback的返回值errorCallback解析或拒绝(除非该值是一个promise,在这种情况下,它使用promise链接解析该值中的值) . 它还通过notifyCallback方法的返回值进行通知 . 无法从notifyCallback方法解析或拒绝承诺 . errorCallback和notifyCallback参数是可选的 . - AngularJS $ q服务API参考(Promise API)

    注意:

    承诺通知不能很好地构成1并且不属于ES6 Promises . 相反,请考虑使用在Angular 2+中广泛使用的rxJS Observables,并为将来提供更好的途径 .

相关问题