ホームページ  >  記事  >  ウェブフロントエンド  >  Promises を使用して jQuery で 3 つの非同期呼び出しをチェーンし、ある呼び出しから次の呼び出しにデータを渡すにはどうすればよいでしょうか?

Promises を使用して jQuery で 3 つの非同期呼び出しをチェーンし、ある呼び出しから次の呼び出しにデータを渡すにはどうすればよいでしょうか?

DDD
DDDオリジナル
2024-11-01 13:56:29152ブラウズ

How can you chain three asynchronous calls in jQuery using Promises, passing data from one call to the next?

jQuery Promises を使用した 3 つの非同期呼び出しの連鎖

この質問では、1 つのメソッドで 3 つの非同期 HTTP リクエストを行うシナリオを検討します。

初期アプローチ:

質問で述べたように、次の呼び出しに遅延を使用しようとしました。最初の 2 つの関数。これは良いスタートではありましたが、2 つの関数の場合しかカバーしていませんでした。これを 3 つの関数に拡張するには、少し異なるアプローチが必要です。

JqXHR オブジェクトによるチェーン:

複数の非同期呼び出しをチェーンする鍵は、$ によって返される jqXHR オブジェクトを返すことです。各関数の .ajax() 。これらのオブジェクトは Promise と互換性があり、.then()/.done()/.fail()/.always().

更新コード:

function first() {
   return $.ajax(...);
}

function second(data, textStatus, jqXHR) {
   return $.ajax(...);
}

function third(data, textStatus, jqXHR) {
   return $.ajax(...);
}

function main() {
    first().then(second).then(third);
}
この更新されたコードでは、first() 関数は AJAX 呼び出しから jqXHR オブジェクトを返し、それが引数として Second() 関数に渡されます。次に、2 番目の() 関数はその jqXHR オブジェクトを返し、それが 3 番目の() 関数に渡されます。

関数間のデータの受け渡し:

引数のデータ、textStatus、および jqXHR は、前の関数の $.ajax() 呼び出しから発生します。これは、first() が Second() にフィードし、Second() が Third() にフィードすることを意味します。したがって、これらの引数を使用して、ある関数から次の関数にデータを渡すことができます。

デモ:

以下のコードは、jQuery Promise を使用した 3 つの非同期呼び出しのチェーンを示しています。 。 $.when('foo') を使用して、$.ajax(...) の代わりに実行された Promise を配信します。

以上がPromises を使用して jQuery で 3 つの非同期呼び出しをチェーンし、ある呼び出しから次の呼び出しにデータを渡すにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。