我有一个应该返回地理编码值的异步函数:
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);
})();
如果功能一切正常,为什么不返回任何内容?我该如何解决这个问题?
答案 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;
}