$http
返回一个包含标准的 then 方法和两个 http 特定方法(success 和 error)的Promise 对象。 then 方法接受两个参数:一个 success 回调和一个 error 回调,它们将使用响应对象调用。 success 和 error 方法各自接受一个参数 - 一个函数,该函数在请求成功或失败时调用。传递给这些函数的参数是传递给 then 方法的响应对象的解构表示形式。除了在一种情况下解构了
response
对象外,我不明白以下两点之间的区别:
- 作为
promise.then
参数传递的成功/错误回调 - 作为 Promise 的
promise.success
/promise.error
方法的参数传递的回调
then
被执行后返回的新的promise响应会导致success
和error
方法消失。对于http错误响应(例如404),在http.then(ok, err).then(ok, err)
中的第一个then
将传递给err
处理程序,但是后续的then
将传递到ok
处理程序。基本上,http.success().error().success().error()
是可链接的,但$q promises则完全不同,它们与承诺和序列处理具体相关(而不是与http请求处理有关)。我花了很多时间才理解这一点,直到我仔细研究了它。 - jimmontsuccess
ÕÆīerror
õĖŹµś»PromiseńÜ䵣ŻÕĖĖAPI’╝īÕ«āõ╗¼Ķó½µĘ╗ÕŖĀÕł░$http()ńÜäĶ┐öÕø×ÕĆ╝õĖŖŃĆé - event_jrsuccess
将在第一个执行后执行,但在任何从它返回的 promise 解决之前,而第二个then
将等待。如果您没有返回 promises,则两者的行为相同。 - Tamlyn