私は(ループで)順次、いくつかの非同期イベントを実行jQueryを使っていくつかのJavaScriptをコーディングしようとしています。以前の非同期イベントが完了した後にのみ反復処理を行います。jQueryを順次実行し、非同期イベント
基本的な考え方は次のとおりです。
for (var i = 0; i < someLength; i++) {
// 1. dynamically add a <form> and <input>s to the DOM
// 2. submit the form to a target <iframe>
// 3. wait for an async callback indicating the form has been submitted
}
私は#1、#2のコードを働いている、と私は、フォームを送信したときに知ってにload
イベントリスナーを添付することができますが完了しました:
$('.iframe').on('load', function() { ...
});
for (var i = 0; i < someLength; i++) {
// 1. dynamically add a <form> and <input>s in the DOM
// 2. submit the form to a target <iframe>
// 3. wait for an async callback indicating the form has been submitted
}
問題は、私はループロジックにready
コールバックを結びつける方法がわからないです。私は延期/約束を調べようとしましたが、実際にこれらの概念を正しく適用する方法は見当たりませんでした。
答えが約束を使用するのであれば、ループが進行している間に「ローディング」スピナーを表示するコードを組み込んでループの外に出たらスピナーを削除する方法も見たいと思う。
ありがとうございます!
ありがとう@Alex。だから、このソリューションでは、基本的にすべてのサブミットを待ち行列に入れ、 'someLength'回数だけ' load'コールバックを待っていますか?前回の提出が成功した場合(次回の提出が成功したか失敗したかを知る方法があると仮定した場合)、次回の提出をしたい場合はどうすればよいですか? –
'.load'ハンドラでは、現在の状態をチェックして、次に何をするかを決めることができます。 –
右は、私が提出した要求のすべて/キックオフ 'for'ループにキューイング、および1つの要求が終了すると、' load'ハンドラが戻ったばかりと呼ばれますれますあなたのコードではと思います。このスキームでは、前回の失敗が実行されなかった場合、次の実行が実行されないようにすることはできません。 –