Возникли проблемы с использованием асинхронного ожидания с API Карт Google Geocode - PullRequest
0 голосов
/ 05 февраля 2019

Я использую API Карт Google Geocode и пытаюсь использовать async await.Я определил несколько функций для обработки запроса:

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 голосов
/ 05 февраля 2019

Асинхронная функция всегда возвращает обещание или переносит возвращаемое значение в обещание, вы должны разрешить обещание следующим образом:

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

    geoResponse.then((result)=>{

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