确保在条件承诺之后执行承诺

时间:2017-05-30 02:03:33

标签: javascript angularjs

我有一个if-else条件,里面有不同的承诺。在逻辑选择了它将进入哪个条件并执行了承诺之后,我必须确保执行我的最终承诺。

if (a < 5)
{
   vm.promise1()
   .then((data) => {
      //do something with data
   })
}
else if (a > 5)
{
	vm.promise2()
   .then((data) => {
      //do something with data
   })
}
else
{
	vm.promise3()
   .then((data) => {
      //do something with data
   })
}

现在我要在条件之后执行vm.finalPromise()。我不想把.finally()放在每个条件的每一个承诺上。还有其他实施吗?

由于

2 个答案:

答案 0 :(得分:2)

在我看来,我建议你保留它&#34; Promisy&#34;而不是将promise存入变量,而是调用返回一些promise的函数。请注意,这只是一种风格偏好。

function doSomething() {
  if (a < 5) {
    return vm.promise1().then((data) => {
      //do something with data
    });
  } else if (a > 5) {
    return vm.promise2().then((data) => {
      //do something with data
    });
  } else {
    return vm.promise3().then((data) => {
      //do something with data
    });
  } 
}

doSomething().then(() => {
  // finally do something
});

答案 1 :(得分:1)

创建一个var以保存任何承诺

在if / else if etc code

之后使用它就像任何其他承诺一样
var p;
if (a < 5) {
   p = vm.promise1()
   .then((data) => {
      //do something with data
   })
} else if (a > 5) {
    p = vm.promise2()
   .then((data) => {
      //do something with data
   })
} else {
    p = vm.promise3()
   .then((data) => {
      //do something with data
   })
}
p.then((result) => {
     // do your magic here
});