Мне нужно запустить 20-200 запросов ajax в цикле, но не болеть google.maps.Geocoder
Я хочу установить задержку 10 секунд между каждым вызовом. Однако запрос ajax
является асинхронным, поэтому я вызываю следующий ajax
запрос на ответ, преуспевший в предыдущем. Если я получу ответ слишком быстро, задержка должна произойти.Как запустить angularjs запрос 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);
или я другой путь?
Спасибо,
Я думал, что ваша реализация 'service' как' factory' –