我有一个可以正常工作的地址地理编码...我正在尝试实施延迟以防止查询超限错误,这是我的JavaScript:
tmpResult = null;
setTimeout(function() {
tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100);
变量
tmpResult
具有我的地理编码的结果。.但是,当我运行脚本时,tmpResult
是null
。是否缺少某些内容?谢谢!
最佳答案
tmpResult
运行时及之后均完全有效。您遇到的问题可能是您在setTimeout()
运行之前尝试使用tmpResult
。请记住,它将在未来100毫秒内运行。您的其他JavaScript将在此之前继续运行。
您需要做的是在setTimeout()
中使用tmpResult
的值或调用某些函数并将其传递为setTimeout()
的值。
setTimeout(function() {
var tmpResult = geocode(facilities[j],cities[j],states[j]);
callMyFunction(tmpResult);
}, 100);
tmpResult
是异步的,使用时不能同步编程。您必须异步编码,这意味着setTimeout()
的值在计时器回调执行之前是无效的,因此您不能在计时器回调触发之前尝试使用它。如您所知,如果您尝试这样做:
var tmpResult = null;
setTimeout(function() {
tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100);
console.log(tmpResult);
这将不起作用,因为您的
tmpResult
语句将在计时器触发之前运行,因此console.log(tmpResult)
尚无值。仅供参考,您应该确保
tmpResult
也不是一个异步函数,因为如果它是异步函数,那么您还必须使用它异步编码。