我需要循环运行 20-200 个 ajax 请求,但为了不伤害google.maps.Geocoder
我想在每次调用之间设置延迟 10 秒。但是ajax
请求是异步的,因此我ajax
在前一个响应成功时调用下一个请求。如果我的反应太快,应该会延迟。
这是我到目前为止编写的代码:
...
$scope.addressList = ....;
$scope.taskCount = $scope.addressList.length;
geoTaskLoopAsync();
function geoTaskLoopAsync(){
// on success douncount taskCount
var geo = new google.maps.Geocoder();
geocoder.geocode( {
'address': address
}, function(results, status) {
$scope.$apply( function () {
// do something with response
if($scope.taskCurr <= $scope.taskCount){
$scope.taskCurr++;
return geoTaskLoopAsync();
}
return;
});
});
那么接下来呢?
我可以添加类似的东西:
stop = $timeout(function() {
if($scope.taskCurr <= $scope.taskCount){
geoTaskLoopAsync();
} else {
$timeout.cancel(stop);
}
}, 10000);
还是我有其他方式?
谢谢,