我正在广播一组坐标,并希望标记显示的坐标每秒更新一次。
var broadcastData = function (data) {
console.log("broadcasting data");
$rootScope.$broadcast('broadcast-started', data);
};
var waitingTime = 1000;
for(var i =0; i<data.length; i++){
var element = data[i];
var coordinates = new Object();
coordinates.latitude = element.LATITUDE;
coordinates.longitude = element.LONGITUDE;
setTimeout(function(){ broadcastData(coordinates);}, waitingTime);
waitingTime = waitingTime+1000;
}
接收者
$scope.$on('broadcast-started', function (event, args) {
console.log(args);
console.log("received");
marker.setLatLng([args.latitude, args.longitude]);
});
问题是即使每次迭代中的坐标不同,每次也只显示第一组坐标?我不明白为什么会发生这种事
最佳答案
你需要像这样使用clouser函数,
for(var i = 0; i < 10; i++) {
(function(i){
var element = data[i];
var coordinates = new Object();
coordinates.latitude = element.LATITUDE;
coordinates.longitude = element.LONGITUDE;
setTimeout(function(){ broadcastData(coordinates);}, waitingTime);
waitingTime = waitingTime+1000;
})(i);}
关于javascript - 以 Angular 循环广播不会在接收器中给出更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40399036/