Javascript / API 空白解析承诺和来自请求的非全局数据



我正在尝试设置然后获取从我正在使用的 API 返回的会话存储变量。API 返回正确的值,这些值可以在返回结果及其状态的函数中访问,但不能在请求之外访问。请求:

var geom;
var latArray = new Array();
var longArray = new Array();
function getLatLong(placeIdent) {
service = new google.maps.places.PlacesService(document.createElement('div'));
request = {placeId: ""+placeIdent+""};
service.getDetails(request, function(result, status) {
if (status !== google.maps.places.PlacesServiceStatus.OK) {
console.log(status);
} else {
writeLatLongData(result);
while(geom != "") {
lat = geom.lat();
latArray.push(lat);
long = geom.lng();
latArray.push(long);
console.log(geom);
console.log(lat);
console.log(long);
timeout();
}
}
}
)
}
function writeLatLongData(result) {
geom = result.geometry.location;
return geom;
}

我知道这个函数是问题的根源,但如果它有任何帮助,我正在尝试访问存储的值,如下所示:

function timeoutOne() {
setTimeout(function(){ 
getGeometry(placeArray);
}, 1000); 
}
timeoutOne();
function getGeometry(placeArray) {
for (var j=0; j < nightsArray.length; j++) {
getLatLong(placeArray[j]);
}
}

我很确定这是一个异步问题,但我对 Async/await 不是很熟悉,我尝试过的所有内容在解析承诺时都只返回一个空值(也许是因为数据在请求函数之外无法访问,仍然(。

有人有什么建议吗?

如果以下条件为真怎么办,

status !== google.maps.places.PlacesServiceStatus.OK

您的 google Place API 调用失败(可能是因为您每 10 秒进行太多调用(,如果发生这种情况,则不会返回任何内容,这反过来又会使函数 getLatLong 返回未定义。

检查此函数是否至少返回一次。

最新更新