gpt4 book ai didi

javascript - 将异步并行请求映射到它们的 ID

转载 作者:行者123 更新时间:2023-11-30 19:12:48 30 4
gpt4 key购买 nike

所以我需要同时从多个来源获取数据,我的代码如下所示:

myArray = [
{
id: 987447,
url: http://someurl.com/data1.json
},
{
id: 923473,
url: http://someurl.com/data2.json
},
]

async function getData(myArray) {
let data = await Promise.all(
myArray.map(a => axios.get(a.url))
)
// console.log(data);
}

.. 然而,问题是一旦数据被获取,它与 myArray 中的 ID 没有任何链接,所以我不知道哪个对象属于哪个 编号。如何将返回的数据绑定(bind)到发起请求的数组元素?

最佳答案

Promise.all 返回的数据与您提供给它的 Promise 的顺序相同。

const arr = [{
url: 'URLA',
}, {
url: 'URLB',
}, {
url: 'URLC',
}];

async function funcAsync(url) {
return url;
}

(async() => {
const ret = await Promise.all(arr.map(x => funcAsync(x.url)));

console.log(ret);
})();


如果要将返回的数据与原数组进行对应,可以使用数据的位置,如:

const arr = [{
url: 'URLA',
}, {
url: 'URLB',
}, {
url: 'URLC',
}];

async function funcAsync(url) {
return url;
}

(async() => {
const ret = await Promise.all(arr.map(x => funcAsync(x.url)));

const correspondance = ret.map((x, xi) => ({
...arr[xi],

result: x,
}));

console.log(correspondance);
})();

关于javascript - 将异步并行请求映射到它们的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58304066/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com