我对angularjs的一个问题是,我不能给$http.get方法中的外部变量赋值。这是我的代码片段:

.factory('MediaService',['$http', function($http, $q){
    return {
        getGalleryIds : function() {
            galeriURL = 'http://api.tika.gov.tr/www/tr/galleries?';
            return $http.get(galeriURL, { cache: true}).then(function(response){
                contentIdList = response.data.data;
                var contentList = [];
                for (i=0;i<contentIdList.length;i++) {
                    var galeriContentURL = 'http://api.tika.gov.tr/www/tr/galleries/' + contentIdList[i].id;
                    contentList[i] = $http.get(galeriContentURL, { cache: true})
                        .then(function(response){
                            return response.data;
                        });
                }
                console.log(contentList);
                return contentList;
            });
        }
    }
}]);

我的问题是在console.log(contentlist)上;由于无法为外部变量赋值,我正在获取promise数组的行。
[Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise]

如何为var contentlist=[];for循环中的变量$$http.get和console.log(contentlist)行分配值;获取对象数组,如下所示
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

最佳答案

问题就在这一部分:

contentList[i] = $http.get(galeriContentURL, { cache: true})
                        .then(function(response){
                            return response.data;
                        });

$http返回存储在promise中的contentList
数组,而不是数据。
函数,数据将不会返回到内容列表。
您需要将该代码替换为:
 $http.get(galeriContentURL, { cache: true})
                        .then(function(response){
                            contentList[i] = response.data;
                        });

这并不能保证存储在
数组的顺序与它们的顺序相同
请求。

07-24 17:30