异步函数返回“未定义”

时间:2018-05-15 21:33:35

标签: javascript node.js async-await

我有一个应该返回地理编码值的异步函数:

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 :(得分:3)

您正在使用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;
}