首页 > 解决方案 > 使用已解决的承诺异步等待更新对象数组

问题描述

我是 Javascript 新手,我遇到了以下问题。

我有一个对象数组,我希望这个对象的一个​​值是一个已解决的承诺。

这是我的数组:

const businesslocationsaux  = [
      ...,
      {
        id: 1,
        type: 'Furniture',
        name: 'Colom Forever',
        address: 'Placa Pietat 5 Vic',
        image: 'https://images.unsplash.com/photo-1472851294608',
        option_visited: false,
        option_promotion: false,
        latlng:{},
        distance: 0,
      },
      ...
]

稍后,我使用 map 来更新数组中的所有对象,并使 latlng 值成为已解决的承诺:

const businesslocations = businesslocationsaux.map( async obj => {
    const locationcoordinates = (await Location.geocodeAsync(obj.address))[0]
    console.log(locationcoordinates)
    return{
    ...obj,
    latlng: locationcoordinates,
}})

console.log(businesslocations)

当我 console.log 异步函数内的位置坐标时,我得到一个对象,但是当我尝试检索我的 'businesslocations' 变量时,它返回一个承诺。

正确的方法是什么?

非常感谢你的帮助,我被困住了:)

标签: javascriptarraysasynchronouspromiseasync-await

解决方案


你将不得不使用 Promise.all 并等待它。

 const businesslocations = await Promise.all(businesslocationsaux.map( async obj => {
        const locationcoordinates = (await Location.geocodeAsync(obj.address))[0]
        console.log(locationcoordinates)
        return{
        ...obj,
        latlng: locationcoordinates,
      }}))

      console.log(businesslocations)


推荐阅读