【发布时间】:2015-07-23 16:12:37
【问题描述】:
我有一个 JSON 对象,其中包含一些条目(约会),每个条目都有一个“位置 ID”。然后我循环遍历这些条目并通过 socketIO 向我的 nodeJS 服务器发出请求,以从具有位置 id 的文档中获取数据。
最后我需要一个包含 lat/lng 数据的数组来在地图上创建一些标记。
代码如下:
//controller for showing map
.controller('MapCtrl', function($scope, socket){
socket.emit('getApp', staticUserid);
socket.on('getApps', function (appdata) {
var locArr = [];
for (var i = 0; i < appdata.length; i++) {
if (appdata[i].locationid != '') {
locArr.push(appdata[i].locationid);
}
}
var LatLngArr = [];
for (var j = 0; j < locArr.length; j++) {
socket.emit('getLocation', locArr[j]);
socket.on('getLoc', function (locData) {
console.log('received lat/lng: ' + locData.lat + '/' + locData.lng);
if (!LatLngArr[j]) LatLngArr[j] = []
LatLngArr[j][0] = locData.lat;
LatLngArr[j][1] = locData.lng;
});
}
//console.log('test:'+LatLngArr[0][0]);
});
var newMarkers = [[52.549678, 13.3879516],[52.5442992, 13.352809],[52.5186283,13.3761181]]; // this should be the generated array
var newCenter = [52.549678, 13.3879516];
createMap(newCenter,newMarkers);
})
问题是,var LatLngArr 没有定义在...
socket.on('getLoc', function (locData)
如果有人可以帮助我,那就太好了:-)
非常感谢!
【问题讨论】:
-
异步,异步,异步。当您了解您只能在传递它的回调中使用异步结果(而不是在该回调之外),那么您将了解您必须做什么来修复您的代码。仅供参考,这是一个常见问题,因为我每天在这里多次看到这样的问题。这是关于该主题的更规范的答案之一:stackoverflow.com/questions/14220321/…
标签: javascript angularjs node.js socket.io