我的 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/