Bri*_*etz 5 javascript es6-promise
我需要通过 并行进行未知数量的异步调用Promise.all。与此类似的东西:
let externalCalls = [call1()];
if (someCondition1) {
externalCalls.push(call2());
}
if (someCondition2) {
externalCalls.push(call3());
}
Run Code Online (Sandbox Code Playgroud)
然后externalCalls将被传递到,Promise.all以便它们可以并行运行。
理想情况下,我想使用结果的解构,以便我可以按名称引用结果,即
const [call1, call2, call3] = await Promise.all(externalCalls);
Run Code Online (Sandbox Code Playgroud)
我知道call1它会永远在那里,但我不知道是否call2或call3将会在那里。所以我想定义动态const调用的结果await Promise.all以获得正确的属性,这可能吗?或者我是否有一个长度未知的通用结果数组,然后必须检查结果中的每个项目以查看哪个调用产生了它?
一方面,您已经知道基于 等调用了.push()哪些externalCalls调用someCondition1。
但也许最好以externalCalls不同的方式构建,这样它总是具有相同的长度:
const conditions = [true, someCondition1, etc]
const calls = [call1, call2, etc]
const externalCalls = conditions.map(
(c, i) => c ? calls[i]() : Promise.resolve(null))
const [result1, result2, etc] = await Promise.all(externalCalls)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8014 次 |
| 最近记录: |