我有一个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()放在每个条件的每一个承诺上。还有其他实施吗?
由于
答案 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
});