在通过Google Maps Geocode API使用异步等待时遇到问题

时间:2019-02-05 02:39:46

标签: node.js async-await google-geocoder

我正在使用Google Maps Geocode API,并尝试使用异步等待。我定义了几个处理请求的功能:

function googleGeoCode(address) {
  const googleMapsClient = require('@google/maps').createClient({
    key: 'googleMapsApiKeyGoesHere',
    Promise: Promise
  });

  return googleMapsClient.geocode({ address: address }).asPromise();
}

async function getGeoCode(address, errors, res) {
  try {
    const result = await googleGeoCode(address);
    return result;
  } catch (error) {
    errors.googleMapsClient = error;
    return res.status(400).json(errors);
  }
}

然后我在快速路线中使用getGeoCode函数:

const geoResponse = getGeoCode(req.body.address, errors, res);

该功能的等待部分无法正常工作。如果我通过控制台登录geoResponse,我将得到Promise { <pending> }

我是使用异步等待的新手,我不确定在这里是否做错了什么。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

异步函数总是返回一个promise或将返回值包装为promise,您必须像这样解决promise

 const geoResponse = getGeoCode(req.body.address, errors, res);

    geoResponse.then((result)=>{

    console.log(result)
    }).catch((err)=>{
     console.log(err);
    })