асинхронная функция возвращает "неопределенное" - PullRequest
0 голосов
/ 16 мая 2018

У меня есть асинхронная функция, которая должна возвращать значение геокода:

async function latlng(place){
//var str;
return googleMapsClient.geocode({
    address: place
}).asPromise()
.then((response) => { response.json.results[0].geometry.location
    /*str = response.json.results[0].geometry.location;
    return str;*/
})
.catch((err) => {
    console.log(err);
});
}

Когда я вызываю его, он ничего не возвращает, но у него есть значение

Я звоню:

(async function(){
    //location start
    start = await data.latlng(req.body.start);
    //location end
    end = await data.latlng(req.body.end);
})();

Почему ничего не возвращается, если в функции все нормально?Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 16 мая 2018

Вы используете async / await .. Это замечательно, но по какой-то причине внутри вашей функции вы решили не беспокоиться ..:)

Также нет смысла отлавливать ошибки в вашей функции latlng, это не имеет смысла, так как ваши start / end наверняка требуют, чтобы оба были действительными ..

Вот упрощенная функция latlng, использующая async / await для того, для чего она предназначена.

async function latlng(place){
  const response =
    await googleMapsClient.geocode({ address: place }).asPromise();
  return response.json.results[0].geometry.location;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...