在带有角度的循环中使用promise

时间:2016-03-21 22:56:04

标签: angularjs firebase promise angular-promise geofire

我在循环中重复数据时遇到问题(这不准确,数据应该是唯一的)。我认为问题是由于对承诺的执行/理解不佳。

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) {
                var p = $q.defer();
                p = gf.get(key).then(function(location) { 
                    console.log(post.title)

                    return ({
                        idKey: key,
                        title: post.title,
                        coords: {
                            latitude: location[0],
                            longitude: location[1]
                        }
                    });
                });
                markers.push(p);

            }
        }

        $q.all(markers).then(function(markers) {
            $scope.markers = markers;
        });

    });
})

}

$ scope.markers充满了重复的post.title数据。任何帮助将不胜感激。我是编程新手,所以如果我的问题看起来很简单,我会道歉。

1 个答案:

答案 0 :(得分:0)

尝试替换:

var p = $q.defer();
p = gf.get(key).then(function(location) {
   ...
})

p = gf.get(key);