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
私はこれを達成するために何ができますか?
おかげ
しかし、データは正しい 'current'オブジェクトに更新されていません。だから私はここに閉鎖が必要だと思う。私は部分的な答えのためにあなたをアップアップするつもりです。 –
@LuisLavieri上記の私の編集を参照してください。私はそのトリックを行うべきだと思います。 – peterholcomb
ありがとうございます。それはとても近かった。私は気をつけて 'i'を渡し、最後に' $ http'の中に 'fieldParameter'オブジェクトを埋めなければなりませんでした。 –