【发布时间】:2016-03-13 18:07:17
【问题描述】:
所以这段代码成功运行并将元素添加到数组中,这通过将它们记录到控制台来确认,但是之后,当我返回数组时,它返回为空。整个早上我一直在用头撞墙。
details.getDetails = function(idSet, pageNum) {
var page = idSet[pageNum],
placeDetails = [],
i;
for(i=0; i<page.length; i++){
ngGPlacesAPI.placeDetails({placeId: page[i]})
.then(function(data){
response = data;
placeDetails.push(response);
console.log(placeDetails) //This shows the loop running and the array being populated
})
}
return placeDetails;
console.log(placeDetails) //This returns empty array
};
我确实认为问题可能与 Rayon 提到的异步数据有关,我试图返回一个承诺,但我不确定我做得对。这是我尝试过的代码。
.factory('details', function(ngGPlacesAPI, $q){
var response,
details = {};
details.getDetails = function(idSet, pageNum) {
var page = idSet[pageNum],
deferred = $q.defer,
placeDetails = [],
i;
for(i=0; i<page.length; i++){
ngGPlacesAPI.placeDetails({placeId: page[i]})
.then(function(data){
response = data;
placeDetails.push(response);
})
}
deferred.resolve(placeDetails);
console.log(deferred.promise);
return deferred.promise;
};
// Return Details Object
return details;
});
【问题讨论】:
-
你正在处理
asynchronous事件.. -
为什么投反对票?我知道我做错了什么,这就是我问的原因。
标签: javascript arrays angularjs for-loop