if( condition1 ) {
return promise1(param).then(promiseFinal);
else if( condition2 ) {
return promise2(param).then(promiseFinal);
else if( condition3 ) {
return promise3(param).then(promiseFinal);
else...
有什么方法可以运行
promiseFinal
而不需要多次指定它?我尝试的方法不起作用:return void function(param){
if( condition1 ) {
return promise1(param);
} else if( condition2 ) {
return promise2(param)
}...
}().then(promiseFinal)
此代码似乎会导致分支,并且与网络相关的承诺会无序执行。我敢肯定有办法做到这一点,但是我现在什么都没想到。
最佳答案
删除void
运算符和您未传递任何内容的函数表达式的param
参数。同样,如果没有条件匹配,您也不要忘记总是返回一个Promise,因为返回undefined
会导致异常。
return (function() {
if (condition1)
return promise1(param);
else if (condition2)
return promise2(param);
else if (condition3)
return promise3(param);
else
Promise.reject(new Error("nothing matched"))
}()).then(promiseFinal);
为此,使用IEFE是一种很好的方法。一个替代方案可能是三元运算符:
return (condition1
? promise1(param)
: condition2
? promise2(param)
: condition3
? promise3(param)
: Promise.reject(new Error("nothing matched"))
).then(promiseFinal);
关于javascript - 像最终的if语句后执行promise,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32673842/