首先,我知道这里已经有很多关于异步的东西,但是我在很多地方都看过了,但没有找到任何似乎可以回答这个特定问题的东西,至少对于这个菜鸟未经训练的眼睛来说是这样。
背景
我有一个函数foo依赖于另一个函数的结果,googlePlaces其中包含了一个承诺,但整体功能是不是一个承诺。
JS
var googleMapsClient = require('@google/maps').createClient({
key: <API_KEY>
Promise: Promise
});
...
function foo() {
var point = [49.215369,2.627365]
var results = googlePlaces(point)
console.log('line 69')
console.log(results)
// do some more stuff with 'results'
}
function googlePlaces(point) {
var placesOfInterest = [];
var latLng = (point[0]+','+point[1])
var request = {
location: latLng,
radius: 10000
};
googleMapsClient.placesNearby(request).asPromise()
.then(function(response){
placesOfInterest.push(response.json.results)
})
.finally(function(){
console.log('end of googlePlaces function:')
console.log(placesOfInterest);
return(placesOfInterest);
})
}
控制台日志:
第 69 行
未定义
的 googlePlaces 函数结束
[我可爱的数组]
我试过的
我试过创建foo一个异步函数,并更改results为= await googlePlaces(point),但我仍然未定义,并且它抛出UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
我可以将foo第 69 行之后的所有内容都移到googlePlaces函数内,这可行,但是为了代码的整洁性和可读性,如果它可以保留在foo
海绵宝宝撒
米琪卡哇伊
郎朗坤
相关分类