Javascript/API 空白已解决的 Promise 和请求中的非全局数据

标签 javascript asynchronous async-await

我正在尝试设置然后获取从我正在使用的 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/

相关文章:

javascript - php中indexof数组js的等效项

javascript - Firefox Addon MySql 连接

ruby - EventMachine、Redis 和 EM HTTP 请求

c# - 返回类型为 Task<Dictionary<string, string>> 的任务

javascript - 如果您在模态中开始或结束单击事件,如何防止简单的 React 模态被关闭?

javascript - 模板化仅采用标题/内容参数的 HTML 代码块的简洁方法,其中内容可能很大且散布着换行符

C#异步委托(delegate),线程调度

javascript - 将 JavaScript 计时器函数转换为使用异步调用

javascript - 重构 promise 从函数返回

.net-3.5 - AsyncBridge.Net35.0.2.0,等待任务