我正在做一个应用程序,我必须对每个请求的几百个项目进行地理编码。所以非常天真我只是做了一个调用谷歌地图地理编码API的for循环。发生的情况是我的代码在很短的时间内对 API 进行了太多调用,因此在 5-10 次迭代后,地理编码 API 只会以OVER_QUERY_LIMIT
限制回答。参考 Google API 参考,发生这种情况是因为:
网页在太短的时间内超过了请求限制。
我的循环目前是这样的:
for (var i = 0; i < dict.nodes.length; i++) {
(function (i) {
g.geocode({'address': dict.nodes[i].location}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
dict.nodes[i]["geocoded_location"] = results
}
})
})(i);
}
如何实现类似 sleep() 函数来随机延迟地理编码函数的调用以避免 API 限制。我实现了一个愚蠢的while循环,但它也让CPU哭了。有任何想法吗?