我正在尝试设置然后获取从我正在使用的 API 返回的 session 存储变量。 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]);
}
}
我很确定这是一个异步问题,但我对异步/等待不太熟悉,并且当 promise 解决时我尝试过的所有内容都只是返回一个空值(可能是因为数据无法在外部访问)仍然是请求函数)。
有人有什么建议吗?
最佳答案
如果以下条件成立怎么办,
status !== google.maps.places.PlacesServiceStatus.OK
您的 google place api 调用失败(可能是因为您每 10 秒进行了太多调用),如果发生这种情况,则不会返回任何内容,从而使函数 getLatLong 返回未定义。
检查该函数是否至少返回一次内容。
关于Javascript/API 空白已解决的 Promise 和请求中的非全局数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52286665/