AngularJS基于var值的.then的条件情况仅在第一个.then之前知道

时间:2017-06-16 09:14:33

标签: javascript angularjs promise conditional angular-promise

我有一个工作正常的代码:

    myService.myFunc1()
        .then(myService.myFunc1)
        .then(function(dataA) {
            // do something
        })
        .then(myService.myFunc2)
        .then(function(dataB) {
            //do something
        });

但是,执行myFunc1时,布尔值myService.trig的值设置正确。我想更改上面的代码,使其成为基于myService.trig布尔值的条件,并决定是否在myService.myFunc1().之后执行所有其余的.then(for true)或相互执行。然后INSTEAD (假的)。

如何以angularJS方式完成?

谢谢。

1 个答案:

答案 0 :(得分:1)

我认为你必须在每次回调中检查``myService.trig`的价值是什么。

myService.myFunc1()
     .then(() => {
         // execute this function if the "myService.trig" is true
         if (!myService.trig) return;
         return myService.myFunc1;
     })
     .then((dataA) => {
         // execute this function if the "myService.trig" is true
         if (!myService.trig) return;
         // do something
     })
     .then(() => {
         // execute this function if the "myService.trig" is false
         if (myService.trig) return;
         return myService.myFunc2;
     })
     .then((dataB) =>  {
         // execute this function if the "myService.trig" is false
         if (myService.trig) return;
         // do something
     });

或者您可以嵌套承诺,因此您无需一直检查值。但老实说,我宁愿重复检查而不是嵌套承诺。