検索

ホームページ  >  に質問  >  本文

javascript - アリからの筆記試験問題

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

我想大声告诉你我想大声告诉你2825日前524

全員に返信(2)返信します

  • 某草草

    某草草2017-05-19 10:33:49

    まず、この状況については、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
  • PHPz

    PHPz2017-05-19 10:33:49

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

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

    返事
    0
  • キャンセル返事