Javascript for loop不等待函数响应
Javascript for loop is not waiting for function response
我正在使用循环,并且在内部我正在调用一个函数,但是当我检查控制台时,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;
}
}
Google API 函数service.getDistanceMatrix
是异步的。
对于这样的异步函数,你经常会找到一个名为 callback
的最后一个参数,因为你的代码不会等待这个函数的答案。
地图 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...`
});
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);
}
相关文章:
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- 仅在响应视图中激发jQuery函数
- 使用来自不同异步函数的响应创建一个json对象
- 如何执行ajax响应返回的javascript函数
- php函数的XMLHttpRequest响应不包含任何数据
- 如何等待javascript函数响应
- 等待anchor标记onclick函数响应为true
- AJAX 成功:函数(响应)返回空值
- 使用 Swift 在 iOS 中获取 Javascript 函数响应
- JavaScript 函数响应为空
- JavaScript 函数响应和链式承诺
- Javascript for loop不等待函数响应
- 将传递函数响应到子项不起作用
- 为什么函数响应.protype而常规对象不响应
- 修改 jquery $.get 函数响应
- 正在请求另一个函数中的函数响应
- 什么是“;函数(响应){}”;
- 对Ko视图模型的函数响应召回
- 如何从异步函数响应中创建一个Node.js模块
- Jquery中的Javascript函数响应不起作用