ホームページ  >  記事  >  ウェブフロントエンド  >  複数の Ajax リクエストの実行と戻りのシーケンスに関する議論の例

複数の Ajax リクエストの実行と戻りのシーケンスに関する議論の例

韦小宝
韦小宝オリジナル
2017-12-31 10:15:111754ブラウズ

この記事では主に、複数の Ajax リクエストの実行順序と戻り値の問題について説明します。ajax に興味がある友人は、複数の リクエストの実行順序と戻り値の議論の例についての記事を参照してください。 Ajax リクエスト

ビジネス

イベント処理 プロセスでは、ボタンがクリックされたり、アクションをトリガーする他のイベント
が発生したりして、3 つ以上の Ajax リクエストを実行する必要がある場合がありますが、その順序について心配する必要があるかもしれません。 Ajax リクエストが実行される場合、Ajax リクエストの順序に問題がある場合があり、それがさまざまな問題を引き起こす可能性があります

たとえば、ajax1 と ajax2 という 2 つの Ajax イベントがあります

main

1 と呼ばれるメソッド呼び出し実行エントリ.

上記の方法に従うと、ajax1が先に実行され、ajax2が後に実行されるようです。よく考えないと、最初に ajax1 が実行され、次に ajax2 が実行されると考える人もいるでしょう。本当にそうなのでしょうか。

答えは必ずしもそうとは限りません。もちろん、実行と戻りの順序を必要としない ajax リクエストが複数ある状況では、誰が最初に実行し、誰が最初に返すかをあまり考える必要はありません
ajax イベント

この場合、どうすれば解決できますか? ajax イベント

の実行の戻りの順序は何ですか?このアイデアによる方法は次のとおりです






function main(){
ajax1(data,callback);
ajax2(data,callback);
}


こう見ると、とても良いと思いませんか?本当に?それは本当に非常に良いですか?

かもしれませんが、場合によっては、このように書くと不便になるかもしれません もちろん、遭遇しないかもしれませんが、私はかなり特殊な状況に遭遇しました
例えば、次の可能性があります



function main(){
ajax1( data , ajax2( ) );
}



この状況では、ajax2 が最初に実行され、最初に完了することが満足できると思いますか?

よく考えてみれば答えが見つかります

いいえ!

さて、この問題を解決する方法です。 ajax2 が ajax1 よりも前に終了していることを確認する方法です。

もちろん、これは単純ではないと言うかもしれませんが、ajax2 メソッドのコールバック メソッド ajax2Callback の最後に ajax1 呼び出しを置きます


それを認める これは解決策ですが、それが非常に古いプロジェクト、つまり数年前から行われているプロジェクトの場合です。内部の呼び出しは複雑なので、このバグを修正するために単純に解決するだけで、複数のバグが発生する可能性がありますので、それを解決する良い方法はありますか?

確かに、解決するのは簡単ですが、仕事の経験が不十分な人は、それをすぐに考えることはほとんどなく、何が何でも急いで問題を解決するために以前の方法を使用するだけです。

そして私は比較的愚かな方法を採用しました、そして、それを一度実行するためにsetTimeOut
Timer
を使用しました、しかし、誰もがこの問題を知っているはずです、幸いなことに、このAjaxがどれくらい実行されるかは誰にもわかりません。マスター、私を指導してください。
配列のソートを忘れないでください
? これについて言うと、これが配列のソートとどのような関係があるのか​​気になるかもしれません。答えは以下で説明します

このコードはすべてを説明しています:




function main(){
aa(data);
ajax1(data,callback);
}

function aa(val){
var data=val+"";//这里是对传入数据进行修改,封装,当然这里是随便写的
ajax2(data,ajax2Callback);
}

function ajax2Callback(){
console.log("=====回调函数ajax2Callback()执行========");
console.log("=====这里正在执行ajax执行完毕后必须执行的操作========");
}


見てください、最下位レベルのメソッドは変更されておらず、メインメソッドだけが変更されています。配列のソートとよく似ていますか? 2 つの値のサイズを比較する場合、
バブル ソート を使用するかどうかにかかわらず、値を保存するために一時変数が設定されます。もちろん、並べ替えてサイズを比較する場合、一時変数を設定する必要はありません。^ 演算子
を使用してサイズを割り当てるだけです。あるいは、システムの Arrays.sort() メソッドを直接呼び出すこともできます。もちろん大丈夫です

rreee

この記事の内容は以上です、皆さんのお役に立てれば幸いです! !


関連する推奨事項:


AJax は、Baidu 検索バーと同様の機能を実装します ajax シリーズの最初の部分で XHR オブジェクトを深く理解します

Ajax インタラクション用の JSON データ ストレージ形式ユーザーと一緒に

以上が複数の Ajax リクエストの実行と戻りのシーケンスに関する議論の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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