javascript - 使用已解决的承诺异步等待更新对象数组
问题描述
我是 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' 变量时,它返回一个承诺。
正确的方法是什么?
非常感谢你的帮助,我被困住了:)
解决方案
你将不得不使用 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)
推荐阅读
- dart - Flutter - 修复抽屉页眉
- wpf - WPF 按钮命令,为什么要在 ViewModel 中编写逻辑代码?
- php - best sorting method for merge two sorted array
- android - 适用于 OAuth 2.0 流 Android 的 Chrome 自定义选项卡的后备
- javascript - 访问数组内的对象
- python - TypeError: config must be a tf.ConfigProto, but got
- html - 如何为引导模式对话框实现拖放。所以用户可以从 Windows 资源管理器中拖动文件
- java - Appium:异常:发生了无效的服务器实例异常:没有安装的节点
- javascript - 在 react 应用程序中使用 react router v4 的正确方法
- ruby-on-rails - 如何使用 rolify gem 检查角色?