根据AngularJS doc,调用$http返回以下内容:
$http
返回带有标准 then* 方法和两个http特定方法的 promise 对象: success 和 error 。所述 然后 方法有两个参数一 成功 以及 错误 回调将与响应对象被调用。的 成功 和 错误 的方法采取一个参数- 一当请求成功或失败分别将被调用的函数。传递给这些函数的参数是传递给then方法的响应对象的结构化表示。 *
除了response在一种情况下对象被破坏的事实之外,我没有得到
response
promise.then
promise.success
promise.error
有没有?传递看似相同的回调的这两种不同方式的意义何在?
注意: 这个答案实际上是不正确的。正如下面的评论所指出的那样, success()确实返回了原始的诺言。 我不会改变 并留给OP进行编辑。
两者之间的主要区别在于,.then()调用返回一个promise(由回调返回的值来解决),而.success()注册回调是一种更传统的方式,并且不返回promise。
.then()
.success()
基于承诺的回调(.then())可轻松实现承诺链(进行一次呼叫,解释结果, 然后再 进行一次呼叫,解释结果,再进行一次呼叫等)。
.success()当您不需要链接调用或不需要使用promise API(例如,在路由中)时,该方法是一种简化的便捷方法。
简而言之: