首页 > 解决方案 > 使用 async await 与 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

问题result仍然是promise,为什么?

标签: javascriptecmascript-6

解决方案


此处的 Map 将返回一组承诺。我们可以Promise.all在返回时使用这些promise 来获得结果。在下面的代码中,t将返回一个承诺。

const t = () => {
    const promises = bigChunkArr.map(async (o) => {
        return {
            ...o,
            address: await getAddress(o.lat, o.lng)
        }
    });
    return Promise.all(promises);
}

推荐阅读