JavaScript-获取对Promise.all响应的相应请求

时间:2018-11-22 20:54:54

标签: javascript promise

我正在创建一个Promises数组,以一次全部触发,就像这样:

let categories = ["cat1", "cat3", "cat3"];
let categoryRequests = []; // array of promises
categories.forEach(category => {
    categoryRequests.push(getCategoryResult({category})); // getCategoryResult returns a promise
});

一旦所有的承诺都得到解决,我就会得到一系列的答复,就像这样:

let categoryResponses = await Promise.all(categoryRequests);
categoryResponses.forEach(categoryResponse => {
    categoryResponse.categoryType = "???"; // should be a value from categories array
});

我想向每个响应添加一个“ categoryType”字段,该字段对应于初始请求中使用的类别。据我了解,响应的顺序与承诺的顺序不同。

我可以想到的一种方法是依次执行每个promise,将相应的类别附加到响应中,然后触发下一个promise。但是,我想同时兑现承诺。

是否可以将初始请求映射到响应数组?

1 个答案:

答案 0 :(得分:1)

订单被保留,否则将无法将已解决的承诺与请求相关联。

请参见Promise.all() documentation

  

无论完成顺序如何,返回值都将按照传递的承诺的顺序进行。