如果满足某些条件,故意失去角度承诺?

时间:2015-11-21 19:30:59

标签: javascript angularjs coffeescript

如果我有这样的链式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那么我认为这是一个错误场景。我实际上想要这个错误。

为了使这个承诺失败,我能做些什么才能提出足够的例外,或者我需要以更具体的方式发出失败信号?

3 个答案:

答案 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