如何在 Promise.all() 中使用 if 表达式
How to use if expression in Promise.all()?
我想用Promise.all()
来处理两个 promise 对象,但第二个是内部的 if
表达式。如何处理这种情况?
它看起来像这样:
functionA();
if(true) {
functionB();
}
functionA()
和 functionB()
都返回一个 promise 对象。在正常情况下,我可以使用
Promise.all([
functionA(),
functionB()
]).then(resule => {
console.log(result[0]); // result of functionA
console.log(result[1]); // result of functionB
})
但是如何处理if
表达式呢?我应该把if(true){functionB()}
包在new Promise()
里吗?
好吧
,如果您使用承诺作为值的代理,您可以使用 if
s,或者您可以将承诺嵌套一个级别 - 个人 - 我更喜欢使用它们作为代理。请允许我解释一下:
var p1 = functionA();
var p2 = condition ? functionB() : Promise.resolve(); // or empty promise
Promise.all([p1, p2]).then(results => {
// access results here, p2 is undefined if the condition did not hold
});
或类似:
var p1 = functionA();
var p2 = condition ? Promise.all([p1, functionB()]) : p1;
p2.then(results => {
// either array with both results or just p1's result.
});
将条件包装在new Promise
中是显式构造,应避免使用。
Promise.all([ cond==true ? p1 : '', p2])
就我而言,我有多种条件
functionA();
if(condition1) {
functionX();
}else if (condition2) {
functionY();
}....
所以我做了以下工作
const promises = [];
promises.push(functionA());
if (condition1) promises.push(functionX());
else if (condition2) promises.push(functionY());
......
Promise.all(promises).then((results) => console.log('results', results) );
相关文章:
- 这个表达式在JavaScript中意味着什么:if(special_validations中的$(element).at
- Javascript if数组包含正则表达式字符串
- 在Javascript中,逗号分隔的表达式可以用作if语句吗
- 优化 if 语句中的条件表达式
- if 语句中多个 OR 表达式的简写
- 使用 if-else 速记时省略第二个表达式
- 有没有办法生成一个可以通过 if 直接执行的条件表达式
- 使用正则表达式在 JavaScript/jQuery 中使用多个 if 语句验证文本
- IF 语句作为 JavaScript 中的赋值表达式
- AngularJS,奇怪的行为,输入if语句甚至表达式都不真实
- 如何在 Promise.all() 中使用 if 表达式
- Javascript if 表达式求值
- Angular JS中ng-if表达式中条件单向绑定的语法
- Ng-if表达式计算不正确
- 在简写if表达式中,值变量为0而不是false
- 重构复杂if表达式的最佳方式
- 使用,(位与运算符)在Angular ng-if表达式中
- Handlebars.js条件语句{{#if表达式}}..{{else}}..{{/if}}错误
- 复杂ng if表达式未执行
- 为什么在javascript的if()表达式中使用var是非法的?