我正在使用Angular来构建基于zipcodes检索分数的服务,而且我遇到了一个我不理解的范围问题。
我的API为每个输入到函数的zipCode返回一个值,然后我尝试将其附加到数组。
但是,下面的代码会引发错误:
cannot call method push() of undefined
这告诉我,我的scoreArray没有进入承诺解决范围。
如何使这个函数富有成效并在for循环完成运行后返回数组?
var $scope.scoreArray = [];
var zipArray = [10031,55325,83832];
function getScores(zipArray,scoreArray){
for(i=0;i<zipArray.length;i++){
Scoreboard.getScores(zipArray[i])
.then(function(score){
$scope.scoreArray.push(score);
})
}
return scoreArray;
}
答案 0 :(得分:3)
array.push()返回新数组的长度。你每次都用int值覆盖它。