一尘不染

Angular HttpPromise:`success` /`error`方法和`then`的参数之间的区别

angularjs

根据AngularJS doc,调用$http返回以下内容:

返回带有标准 then* 方法和两个http特定方法的 promise 对象: successerror 。所述
然后 方法有两个参数一 成功 以及 错误 回调将与响应对象被调用。的 成功错误 的方法采取一个参数-
一当请求成功或失败分别将被调用的函数。传递给这些函数的参数是传递给then方法的响应对象的结构化表示。
*


除了response在一种情况下对象被破坏的事实之外,我没有得到

  • 成功/错误回调作为参数传递 promise.then
  • 回调作为promise 的promise.success/ promise.error方法的参数传递

有没有?传递看似相同的回调的这两种不同方式的意义何在?


阅读 283

收藏
2020-07-04

共1个答案

一尘不染

注意: 这个答案实际上是不正确的。正如下面的评论所指出的那样, success()确实返回了原始的诺言。 我不会改变 并留给OP进行编辑。


两者之间的主要区别在于,.then()调用返回一个promise(由回调返回的值来解决),而.success()注册回调是一种更传统的方式,并且不返回promise。

基于承诺的回调(.then())可轻松实现承诺链(进行一次呼叫,解释结果, 然后再 进行一次呼叫,解释结果,再进行一次呼叫等)。

.success()当您不需要链接调用或不需要使用promise API(例如,在路由中)时,该方法是一种简化的便捷方法。

简而言之:

  • .then() -promise API的全部功能,但更详细
  • .success() -不返回承诺,但提供更方便的语法
2020-07-04