gpt4 book ai didi

Javascript异步获取循环内的请求

转载 作者:行者123 更新时间:2023-12-02 22:03:49 24 4
gpt4 key购买 nike

我有一个如下所示的对象数组:

[ { firstName: 'Mike', lastName: 'Jones' },
{ firstName: 'Joe', lastName: 'Smith' },
{ firstName: 'Bob', lastName: 'Johnson' } ]

我需要将该数组传递给一个函数,该函数将向每个对象添加一个“middleName”字段以及 middleName 的值。该函数通过在 Node 中发出异步 http.get 请求来获取中间名。问题就在这里。无论我如何尝试,我都无法完成这项工作。

之前有人建议了这样的循环:

array.forEach(function (obj) {
GetMiddleName(obj, function (person) {
obj.MiddleName = person;
});
});

但是由于在 GetMiddleName 函数中调用 get 的异步性质,这不起作用。谁能告诉我一个简短的函数来满足我的需要?

最佳答案

创建一个 Promise 数组,在该数组上调用 Promise.all,然后向每个 Promise 插入中间名:

const getMiddleNameProm = obj => new Promise((resolve) => {
GetMiddleName(obj, resolve);
});
Promise.all(arr.map(getMiddleNameProm))
.then((middleNames) => {
for (let i = 0; i < middleNames.length; i++) {
arr[i].MiddleName = middleNames[i];
}
// do stuff with populated arr here
});
});

关于Javascript异步获取循环内的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59786513/

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