我正在尝试遍历一组对象(帖子)。在循环中是对 geofire 数据库 (gf.get()) 的查询。它检索某个键的 gps 位置。然后将数据推送到数组。
var posts = PostsData.getPosts();
$scope.$watch($scope.active, function() {
$timeout(function() {
var markers = [];
for (var key in posts) {
var post = posts[key];
if (posts.hasOwnProperty(key) && posts[key]!=null) {
gf.get(key).then(function(location) {
console.log(post.title);
console.log(key);
markers.push({
idKey: key,
title: post.title,
coords: {
latitude: location[0],
longitude: location[1]
}
})
})
$scope.markers = markers;
}
}
})
})
以下代码的输出......
console.log(post.title);
console.log(key);
一遍又一遍是同一个key和title,不代表“posts”中的数据(key和title是唯一的)。
我相信我的问题是由于对异步调用、承诺等缺乏了解。
任何帮助将非常感激。