javascript - 如何将多个 onError 函数分配给一个 Promise(由 Angular 的 $http.post 返回)

标签 javascript angularjs promise angular-promise

我的 AngularJS 代码需要链接多个 onSuccess , onError函数 $http.post 返回的 promise

  var promise = $http.post(url);
     promise
      .then(
          /*success 1*/function () { console.log("success 1"); },
          /*error 1*/function () { console.log("error 1"); })
      .then(
          /*success 2*/function () { console.log("success 2"); },
          /*error 2*/function () { console.log("error 2"); });

上面代码的问题是它打印 error 1 > success 2当 HTTP 响应失败而不是 error 1 时> error 2

我在 stackoverflow 上做了一些研究,发现当你可以访问 $q 时你可以这样做$q.reject()error 1触发error 2但就我而言,我只能访问 $http.post 返回的 promise 。那我该怎么办?

P.S.当然可以打电话error2()error 1内部但我想链接它们,因为它看起来更具可读性和可扩展性。

有什么想法吗?

最佳答案

从成功/错误处理程序返回一个值(或不返回任何值)将解决链中下一个 then block 的 promise 。要传播拒绝,请返回 $q.reject():

var promise = $http.post(url);
 promise
  .then(
      /*success 1*/function () { console.log("success 1"); },
      /*error 1*/function () { console.log("error 1"); return $q.reject();})
  .then(
      /*success 2*/function () { console.log("success 2"); },
      /*error 2*/function () { console.log("error 2"); });

关于javascript - 如何将多个 onError 函数分配给一个 Promise(由 Angular 的 $http.post 返回),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29160924/

相关文章:

javascript - 快速跳转使 javascript 对象在屏幕上可见

javascript - DoubleClick Floodlight 代码和 AngularJS

javascript - 将参数传递给解析函数

ios - 无法将类型 Promise (_,_) -> DataRequest 的返回表达式转换为返回类型 Promise<DataResponse,AnyObject>>

javascript - 对象中的传播语法如何工作?

javascript - 如何覆盖 JavaScript 自动完成的 CSS ul 菜单?

javascript - 在 Node js 中保留响应的值

javascript - 如何在同一 Controller 之间共享范围两次

javascript - 从另一个函数中的 Promise 内部返回一个值

javascript - 如何 promise 这段 Mongoose 代码?