我对JavaScript closures
和AngularJS promises
没有太多的经验。所以,这里是我的方案在AngularJS中使用闭包和承诺
目标:
我需要$http
请求for
循环中调用
(明显)问题
即使循环完成,我的变量还没有更新
当前执行考试
function getColumns(fieldParameters)
{
return $http.get("api/fields", { params: fieldParameters });
}
for(var i = 0; i < $scope.model.Fields.length; i++)
{
var current = $scope.model.Fields[i];
(function(current){
fieldParameters.uid = $scope.model.Uid;
fieldParameters.type = "Columns";
fieldParameters.tableId = current.Value.Uid;
var promise = getColumns(fieldParameters);
promise.then(function(response){
current.Value.Columns = response.data;
}, error);
})(current);
}
//at this point current.Value.Columns should be filled with the response. However
//it's still empty
我该怎么做才能做到这一点?
感谢
它可以工作,但是数据没有被更新到正确的'当前'对象。这就是为什么我认为我需要在这里关闭。无论如何,我会反过来为你提供部分答案。 –
@LuisLavieri查看我上面的修改。我认为应该这样做。 – peterholcomb
谢谢。那非常接近。我不得不传递'i'并在'$ http'中填充'fieldParameter'对象,以使其在最后工作 –