我正在使用循环和内部我正在调用一个函数但是当我检查控制台时,for循环不等待函数响应,我的意思是循环在函数响应之前完成。这是代码:
$scope.increment = 0;
var count = 0;
$scope.passingDistance = [];
$scope.resultsDetails = [];
for (var i = 0; i < $scope.latitude.length; i++) {
console.log("i-:", i);
var lati = $scope.latitude[i];
for (var j = 0; j < $scope.longitude.length; j++) {
console.log("j", $scope.increment);
var longi = $scope.longitude[$scope.increment];
$scope.getDistance(lati, longi);
// here I want to wait for loop until
// I am not getting this function return value...
$scope.increment = $scope.increment + 1;
break;
}
}
答案 0 :(得分:0)
Google API函数service.getDistanceMatrix
是异步的。
使用这些异步函数,您经常会找到一个名为callback
的最后一个参数,因为您的代码不会等待此函数的答案。
Maps API正如您在此处看到的那样,service.getDistanceMatrix
中还有一个回调函数。现在,您还必须在包装函数中包含此回调。
使用此功能,您可以像这样修改代码
// lati, longi, callback (is just a function witch runs at the end)
$scope.getDistance(lati, longi, function(){
`//here i want to wait for loop until i am not getting this function return value...`
});
答案 1 :(得分:0)
service.getDistanceMatrix
是异步的。您必须正确地使用callback
重写代码,或者执行以下不建议的锁定:
$scope.lock = true;
$scope.getDistance(lati, longi, function(){
$scope.lock = false;
});
while($scope.lock){
setTimeout(function(){
;
}, 10);
}
将锁定功能传递给service.getDistanceMatrix
作为回叫
编辑:澄清使用回调。
重写$scope.getDistance
,如下所示:
$scope.getDistance = function(lati, longi, callback){
// other code
service.getDistanceMatrix({Your_parameters},callback);
}