Javascript 使用异步等待与映射的一致性
我有一大块的对象数组。我想得到一些东西,然后把它分配给一个新的属性,我这样做了Javascript 使用异步等待与映射的一致性,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一大块的对象数组。我想得到一些东西,然后把它分配给一个新的属性,我这样做了 async function t() { return bigChunkArr.map(async o => ({ ...o, address: await getAddress(o.lat, o.lng) })) } const result = await t() //expected to be array 问题是结果仍然是一个承诺,为什么 Map此处将返回一系列承诺。我们可以使
async function t() {
return bigChunkArr.map(async o => ({
...o,
address: await getAddress(o.lat, o.lng)
}))
}
const result = await t() //expected to be array
问题是结果仍然是一个承诺,为什么 Map此处将返回一系列承诺。我们可以使用Promise.all来获得回报时这些承诺的结果。在下面的代码中,t将返回一个承诺
const t = () => {
const promises = bigChunkArr.map(async (o) => {
return {
...o,
address: await getAddress(o.lat, o.lng)
}
});
return Promise.all(promises);
}
结果将是一个数组,决不可能是一个承诺,因为array.map总是返回一个数组-同样,const result=await t t;代码必须在异步函数中运行-否则代码不会在ALLASO上运行,异步函数t中没有任何点,因为您不等待这一答案?请使用for循环而不是map。@NarendraChouhan-这将使对getAddress的调用以串联方式运行,而不是潜在的并行方式运行