ループで 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);
または私は他の方法を持っていますか?
ありがとうございました、