小编Joe*_*hez的帖子

角度承诺 - 链接分别拒绝和解决渠道

情况

如果我这样做:

cookFood().then(function(food) {
    eatFood(food);
});
Run Code Online (Sandbox Code Playgroud)

无论cookFood拒绝还是解决,eatFood都将被执行.我不希望这样,因为我希望它只在它结算时执行,因为这是它的目的,而不是处理错误.如果我这样做:

cookFood().then(function(food) {
    return eatFood(food);
}, function() {
    console.error('Error coooking food');
    return 'FOOD_ERROR';
}).then(function(food) {
   return shitFood(food);
}, function(err) {
   if (err === 'FOOD_ERROR') {
       alert('Looks like there was an error cooking food...');
   }
});
Run Code Online (Sandbox Code Playgroud)

我永远不会得到警报,因为我之前执行过错误处理程序.我不希望这样,因为我想要执行这两个.此外,如果出现错误,将调用"shitFood",这是不受欢迎的.

解决方案

我知道两种情况的解决方案.我只是觉得"必须有更好的方法".

到第一个:

cookFood().then(function(food) {
    eatFood(food);
}, angular.noop);
Run Code Online (Sandbox Code Playgroud)

现在吃的食物不会被称为不是食物的东西.但是每次我都不想使用angular.noop我不想处理错误(因为我会在链中稍后这样做)?

到第二个:

cookFood().then(function(food) {
    return eatFood(food);
}, function() {
    console.error('Error coooking food');
    return $q.reject('FOOD_ERROR');
}).then(function(food) {
   return shitFood(food);
}, function(err) {
   if (err === 'FOOD_ERROR') {
       alert('Looks like there was …
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs angular-promise

1
推荐指数
1
解决办法
146
查看次数

标签 统计

angular-promise ×1

angularjs ×1

javascript ×1

promise ×1