如果我有这样的链式Angular承诺:
promiseB = promiseA.then(function(result) {
if (result==0) {
// result is not allowed to be zero - this is an error
// Do something here to make this promise fail ?!?!?
}
return result + 1;
});
我想修改代码,以便在某些情况下承诺失败,让我们说如果这个'then'函数得到结果== 0那么我认为这是一个错误场景。我实际上想要这个错误。
为了使这个承诺失败,我能做些什么才能提出足够的例外,或者我需要以更具体的方式发出失败信号?
答案 0 :(得分:1)
您可以注入$q
服务,并致电$q.reject()
。 Read The Documentation
promiseB = promiseA.then(function(result) {
if (result==0) {
return $q.reject(result);
}
return result + 1;
});
答案 1 :(得分:0)
试试这个:
var myPromise = $q(function(resolve, reject) {
$http.get('http://someurl').then(function(data){
reject('some reason');
//if the result is not 0 return resolve(data)
});
});
myPromise.catch(function(err){
console.log('err',err);
})
同时查看https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns
答案 2 :(得分:-2)
来自此页面的Promise API部分:https://docs.angularjs.org/api/ng/service/ $ q
此方法返回一个新的promise,它通过successCallback,errorCallback的返回值解析或拒绝(除非该值是一个promise,在这种情况下,使用promise链接解析该promise中的值) 。它还通过notifyCallback方法的返回值进行通知。无法通过notifyCallback方法解析或拒绝承诺。
所以看起来基本上你只需要在你的回调函数中返回false,即
ti[123]
#[1] 1.2