for
ループを作成して、ライブラリ(jQueryなど)を使用せずにループの新しい繰り返しを開始する前に、非同期呼び出しが完了するのを待つ方法を教えてください。forループをJS内のライブラリなしで作成する
例:
var items = [1,2,3,4,5];
for (var i = 0; i < items.length; i++) {
var promise = new Promise(function(resolve, reject){
asyncAPIcall({
body : item[i]
}, function(error, response){
if(error) {
reject();
} else {
resolve();
}
});
promise.then(function() {
//continue loop
}, function() {
//break loop
});
}
おかげ
UPDATE(4/29)
私は関数を作成し、この溶液を考えますth通話自体で:
var items = [1,2,3,4,5];
var counter = items.length - 1; //minus one since array is zero based.
function myLoop(){
asyncAPIcall({
body : item[counter]
}, function(error, response){
if(error) {
// Error message.
} else {
counter = counter - 1;
if(counter == -1){
//Done
}
else {
myLoop();
}
}
});
}
できません。あなたは本当に何をする必要がありますか? – Amit
'for'ループは同期しています。非同期操作を待つことは決してありません。あなたは何か類似したキューを持つことができます。 –
@Amit長い一連のAPI呼び出しを起動する必要があります。失敗した場合は、追加の呼び出しのチェーンを停止します。一度に1つのオブジェクトしか受け付けないAPIとやりとりしているので、すべてのオブジェクトを送信するために20回のようにヒットする必要があります。 –