私はオブジェクトの配列を持っていて、いくつかの要求を実行したい - オブジェクトごとに1つ。angularJS - 1つずつクエリを実行する方法は?
$ http-serviceは非同期モードで要求を実行するので、それを達成するにはどうすればよいですか?
は、非同期のように/
私はオブジェクトの配列を持っていて、いくつかの要求を実行したい - オブジェクトごとに1つ。angularJS - 1つずつクエリを実行する方法は?
$ http-serviceは非同期モードで要求を実行するので、それを達成するにはどうすればよいですか?
は、非同期のように/
あなたは$はhttpのコールバックで次の要求を呼び出すことができますC#で待っています。このような 何か:
function sendRequestList(objectList) {
if (objectList.length > 0) {
var currentObject = objectList.pop();
$http.get(/* request params here */)
.then(
function() {
sendRequestList(objectList);
},
function() {
sendRequestList(objectList);
}
);
}
}
は、しかし、私はあなたが望むこの方法を達成しない方法を知りません。 このヘルプが必要です。
A +
を投稿する必要があり – Monochromie
あなたはすべての要求が起こって前に終了させたい場合は、あなたが約束を生成するの角度$qサービスを使用して、すべての要求が行われた結果だけを返すことができます。誰かによって行われ、この例のように連鎖ご要望 へ
// all of this in a controller injecting $q
function fetchAll(objects) {
var deferred = $q.defer();
var done = 0;
var results = {};
for(var i=0; i < objects.length - 1; i++) {
// a trick to avoid every iteration to share same i value
(function(index) {
$http.get(/* request params here */)
.then(
function(data) {
results[index] = data;
// or results[object.anyProperty] = data;
done++;
// ensure all calls are successful
if (done === objects.length) {
deferred.resolve();
}
},
function() {
deferred.reject();
}
);
})(i);
}
return deferred.promise;
}
// and call it like this
fetchAll(objects)
.then(function success(result) {
// continue your business
}, function error(result) {
// handle error
});
使用の約束: http://jsfiddle.net/jsengel/0ryvkvph/あなたがそうあなたのコードまたは何を試してみました... – xelilof
、それは最も近い解決策です。 – inspired