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

时间:2017-05-25 17:22:46

标签: javascript angularjs angular-promise

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

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

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

1 个答案:

答案 0 :(得分:1)

第三个参数是notifyCallBack函数。

来自文档:

  

Promise API

     

方法

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

         

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

  •   
     

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

注意:

承诺通知不会很好地构成1,也不属于ES6 Promises。相反,请考虑使用rxJS Observables中广泛使用的Angular 2+,为未来提供更好的途径。