【发布时间】:2018-09-13 11:39:20
【问题描述】:
我正在尝试设置然后获取从我正在使用的 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 不是很熟悉,而且我尝试过的所有操作都在解决承诺时返回一个空值(可能是因为无法在外部访问数据请求函数,仍然)。
有人有什么建议吗?
【问题讨论】:
标签: javascript asynchronous async-await