ホームページ >ウェブフロントエンド >jsチュートリアル >関数の実行を続行する前に、すべての jQuery Ajax リクエストが確実に完了するようにするにはどうすればよいですか?
jQuery Ajax リクエストが完了するまで関数の実行を一時停止する方法
関数内で複数の jQuery Ajax リクエストを実行する場合、次のことを確認する必要がある場合があります。次のアクションに進む前に、すべてのリクエストが完了していることを確認します。これは、データの不整合や競合状態を防ぐために特に重要です。
この問題に対処するために、jQuery には強力な .when() 関数が導入されています。この関数を使用すると、開発者は複数の Deferred オブジェクトを引数として指定し、それらがすべて解決されたときにコールバック関数を実行できます。
4 つの Ajax リクエストを開始する次の例を考えてみましょう:
function ajax1() { return $.ajax({ /* Ajax request parameters */ }); }
To wait続行する前に 4 つのリクエストすべてを完了するには、次のように .when() を利用できます。
$.when(ajax1(), ajax2(), ajax3(), ajax4()).done(function(a1, a2, a3, a4){ // This code will execute when all Ajax requests resolve. // a1, a2, a3, and a4 contain response data and status. });
このアプローチにより、次のことが保証されます。すべての Ajax リクエストが正常に完了するまで後続のアクションは実行されないため、エラーやデータ整合性の問題のリスクが軽減されます。
Ajax リクエストの数が可変である状況では、引数リストを動的に生成できます。ただし、これにはもう少し複雑なアプローチが必要です。
さらに、.when() 関数は、すべての Ajax クエリを含む jQuery Promise オブジェクトを返します。これにより、.then() と .fail() を使用してカスタムの成功ハンドラーと失敗ハンドラーを指定できるようになり、失敗モードをさらに制御できるようになります。
以上が関数の実行を続行する前に、すべての jQuery Ajax リクエストが確実に完了するようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。