javascript - アリからの筆記試験問題
我想大声告诉你
我想大声告诉你 2017-05-19 10:31:49
0
2
471

Ajax を使用してページ上のすべてのリクエストの応答時間を収集する方法。詳細な回答が得られることを願っています。コードを添付するのが最善です。ありがとうございます。

我想大声告诉你
我想大声告诉你

全員に返信(2)
某草草

まず、この状況については、jquery と zepto がすでに独自の実装メソッドを持っています https://github.com/madrobby/zepto/blob/master/src/ajax.js 投稿者はそれを確認できます

ソースコードにはいくつかのフックがありますajaxStart,ajaxStop,ajaxBeforeSend,ajaxError,ajaxComplete楼主仔细观察这些钩子,他们代表了ajax执行的不同时刻,在这些函数中都会调用一个方法triggerGlobal、このメソッドが鍵です

リーリー

このメソッドの機能は、フックがトリガーされるたびに、対応するイベントが以前にドキュメントに登録されていることが判明した場合、その時点で対応するステータスがトリガーされることです。私たちが行う必要があるのは、ajax を送信する前にイベントをバインドし、各 ajax に一意の識別子を追加して、時間を取得することです。 リーリー

最後に、すべての ajax リクエストの時間がデータに保存されます。

フィールドは、基本的に $.ajax() を呼び出したときに渡されるオブジェクトと同じです (実際、$.extends は内部で実行されます)。ただし、イベントがトリガーされたとき 2 つの設定が 1 つのオブジェクトである場合)、いくつかの追加フィールドをそれにマウントできます。 settings他にもいくつか方法がありますが、どれも似たような感じで、リクエスト送信時の時間を記録し、受信時の時間を記録すればOKです

投稿者がaxisoなどの新しいカプセル化されたAjaxライブラリを使用している場合は、インターセプタなどの概念を使用してこの機能を実現することもできます

ただし、どんなに丁寧な梱包でも本質は同じで、送る前に時間を記録し、返信後に再度時間を記録し、最後の2つを差し引きます

いいねを押す +0
PHPzhong

本来の原則は、readyState の変化を監視することです。readyState が変化するたびに、onreadystatechange イベントが応答時間として記録され、リクエストがサーバーに送信されます。

readyState は XMLHttpRequest のステータスを保存します。 0から4に変化します。
0: リクエストは初期化されていません
1: サーバー接続が確立されました
2: リクエストが受信されました
3: リクエストが処理中です
4: リクエストが完了し、応答の準備ができています

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート