Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用异步等待与映射的一致性_Javascript_Ecmascript 6 - Fatal编程技术网

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的调用以串联方式运行,而不是潜在的并行方式运行