javascript - 如何使用setTimeout并获取返回变量?

标签 javascript google-maps-api-3

我有一个有效的函数地理编码...我正在尝试实现延迟以防止超出查询限制错误,这是我的 javascript:

tmpResult = null; 
setTimeout(function() { 
    tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100); 

变量tmpResult具有我的地理编码的结果。但是,当我运行脚本时,tmpResultnull。有什么吗?我失踪了?

谢谢!

最佳答案

tmpResultsetTimeout() 时完全有效运行之后。您遇到的问题可能是您正在尝试使用 tmpResultsetTimeout()之前已经跑了。请记住,它将在未来 100 毫秒内运行。您的其他 javascript 将在此之前继续运行。

您需要做的是使用 tmpResult 的值来自setTimeout()内或者调用某个函数并将 tmpResult 的值传递给它.

setTimeout(function() { 
    var tmpResult = geocode(facilities[j],cities[j],states[j]);
    callMyFunction(tmpResult);
}, 100);

setTimeout()是异步的,使用时不能同步编程。您必须异步编码,这意味着 tmpResult 的值在计时器回调执行之前无效,因此您不能在计时器回调触发之前尝试使用它。

正如您所发现的,如果您尝试这样做:

var tmpResult = null;
setTimeout(function() { 
    tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100);
console.log(tmpResult);

它不会工作,因为你的 console.log(tmpResult)语句将在计时器触发之前运行,因此 tmpResult还没有值。

<小时/>

仅供引用,您应该确保 geocode()也不是一个异步函数,因为如果它是,那么您也必须使用它进行异步编码。

关于javascript - 如何使用setTimeout并获取返回变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23354834/

相关文章:

javascript - Google map JS API "StreetViewPanorama"某些地址显示黑屏

javascript - 无法解决 Ext.ux 的依赖关系

JavaScript bool 类型

javascript - CSS :nth-child(even) Selector background-color not working

javascript - Google Maps Api 在缩放后反转 KML 层

javascript - 所有 Google Maps v3 标记的通用事件处理程序

php - 如何在 PHP 中集成谷歌地图并用标志标记地点

javascript - 正则表达式验证允许尾随空格

javascript - 尝试使用 Javascript 进行一些简单的计算以显示在网站上

javascript - Uncaught ReferenceError : saveData is not defined in Google Maps