相关疑难解决方法(0)

使用Promise.all获得基于名称的结果的最佳方法

默认情况下,Promise.All([])函数返回一个基于数字的索引数组,该数组包含每个promise的结果.

var promises = [];
promises.push(myFuncAsync1()); //returns 1
promises.push(myFuncAsync1()); //returns 2
Promise.all(promises).then((results)=>{
    //results = [0,1]
}
Run Code Online (Sandbox Code Playgroud)

使用Promise.all()返回命名结果索引的最佳方法是什么?

我尝试使用Map,但它以这种方式返回数组中的结果: [key1, value1, key2, value2]

更新:

我的问题似乎不清楚,这就是为什么我不喜欢基于有序的索引:

  1. 维护很糟糕:如果在代码中添加一个promise,则可能需要重写整个结果函数,因为索引可能会有变化.
  2. 读起来很糟糕 :( results[42]可以通过下面的jib答案修复)
  3. 在动态上下文中不可用:
var promises = [];
if(...)
    promises.push(...);
else{
    [...].forEach(... => { 
        if(...)
            promises.push(...);
        else
            [...].forEach(... => {
                promises.push(...);
            });
    });
}
Promise.all(promises).then((resultsArr)=>{
    /*Here i am basically fucked without clear named results 
        that dont rely on promises' ordering in the array */
});
Run Code Online (Sandbox Code Playgroud)

javascript es6-promise

16
推荐指数
3
解决办法
4908
查看次数

标签 统计

es6-promise ×1

javascript ×1