【问题标题】:Updating an array of objects with a resolved promise async await使用已解决的承诺异步等待更新对象数组
【发布时间】:2020-11-21 16:06:50
【问题描述】:

我是 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' 变量时,它返回一个承诺。

正确的做法是什么?

非常感谢你帮助我卡住了:)

【问题讨论】:

    标签: javascript arrays asynchronous promise async-await


    【解决方案1】:

    您将不得不使用 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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 2018-04-17
      • 2018-04-02
      • 2019-09-29
      • 2021-12-26
      • 2018-07-19
      • 1970-01-01
      • 2017-06-15
      相关资源
      最近更新 更多