Vue ポーリング リクエスト ソリューションの完全な例

Vue ポーリング リクエスト ソリューションの完全な例

世論調査の理解

実際、ポーリングの焦点はループ自体ではなく、実行間の間隔にあります。 Ajax は非同期リクエストであり、リクエストの開始から応答の受信までが完全なプロセスです。このプロセスに必要な時間は予測できません。極端な言い方をすると、リクエストに必要な時間がポーリング間隔を超えると、多くの問題が発生します。したがって、ポーリング間隔は、リクエスト プロセスが完了することを保証することを基準にする必要があります。これがより論理的です。

事業内容:

  1. ページは最初のページのデータを表示するために初期化され、その後現在のページのデータは10秒ごとに更新されます。
  2. フィルター条件を変更するか、ページ番号を変更してデータを直接更新し、現在のデータを10秒ごとに更新します。

ビジネスロジックポイント分析:

  1. 手動で呼び出された場合、リクエストは直ちに実行されます
  2. その後、10秒ごとに実行してリストを更新します

実装のアイデア

  1. リクエストを直接呼び出す
  2. リクエストの成功コールバック関数にタイマーsetTimeoutを設定します。
  3. タイマー内で 1.2 ステップを繰り返します。
  4. 手順1.2.3を再帰関数にカプセル化する
// ポーリングメソッド polling (page) {
      this.getWorks(page).then(res => {
        this.pollingST = setTimeout(() => {
          タイムアウトをクリアします(this.pollingST)
          this.polling(ページ)
        }, 10000)
      })
    }

setIntervalを使わない理由

setInterval の機能は、ポーリングの概念に完全に一致しているようです。操作が同期コードである場合、setInterval を使用しても問題はありません。問題は、setInterval が十分に柔軟ではなく、最後のリクエストが完了したかどうかを知ることができないことです。したがって、setTimeout の方が適しています。

注意事項

ポーリングでは、pollingST 変数を使用してタイマーを記録しました。実行のたびに、前のタイマーをクリアする必要があります。再帰呼び出しはタイマー内にあるため、タイマーをクリアしてポーリングを終了するのは非常に便利です。

完全な疑似コード

<スクリプト>
エクスポートデフォルト{
  データ () {
    戻る {
      ポーリングST: null
    }
  },
  メソッド: {
    // ページ変更イベント pageChange (params) {
      // 既存のタイマーをクリアします clearTimeout(this.pollingST)
      //ポーリングを呼び出す this.polling(params)
    },
    // リクエストインターフェースメソッド getWorks() {
      新しい Promise を返します(resolve => resolve({}))
    },
    // ポーリングメソッド polling (params) {
      this.getWorks(params).then(res => {
        this.pollingST = setTimeout(() => {
          タイムアウトをクリアします(this.pollingST)
          this.polling(パラメータ)
        }, 10000)
      })
    }
  },
  作成された(){
    // ポーリングを呼び出す this.polling({ page: 1, pageSize: 5 })
  },
  破壊された(){
    タイムアウトをクリアします(this.pollingST)
  }
}
</スクリプト>

要約する

これで、vue ポーリング ソリューションに関するこの記事は終了です。より関連性の高い vue ポーリング ソリューションについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはポーリングを使用してリクエストコードを定期的に送信します

<<:  Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

>>:  Centos8 に nginx をインストールするための詳細なチュートリアル (画像とテキスト)

推薦する

CentOS7にNginxをインストールして自動起動を設定する方法

1.公式サイトからインストールパッケージをダウンロードするhttp://nginx.org/en/d...

DockerとVMwareの競合を解決する

1. Dockerの起動の問題:問題は解決しました: Hyper-V をオンにする必要があります (...

Linux viコマンドの知識ポイントと使い方のまとめ

Linux viコマンドの詳しい説明vi エディタは、すべての Unix および Linux システ...

MYSQL接続ポートが占有され、ファイルパスエラーが発生する問題を解決します

今朝、私は Wampserver を使用してローカルの win7 マシン上に PHP 環境を構築し、...

Vue ローカルコンポーネントデータ共有 Vue.observable() の使用

コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...

MySQL データベースの詳細な説明 - 複数テーブル クエリ - 内部結合、外部結合、サブクエリ、相関サブクエリ

複数テーブルクエリ複数のテーブルから関連するクエリ結果を取得するには、単一の SELECT ステート...

JavaScriptオブジェクト指向について学ぼう

目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...

Linux で iostat コマンドを使用するチュートリアル

序文運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言...

MySQL 8.0.18 安定版がリリースされました! 予想通りハッシュ結合が実装されました

MySQL 8.0.18 安定版 (GA) が昨日正式にリリースされ、Hash Join も期待通り...

HTML における DOM 要素のスクロールバースクロール制御の詳細な説明

dom要素に新しい子要素を追加し、新しく追加された新しい要素がコンテナーのスコープを超えた場合は、次...

MySQL でコマンドを使用して階層検索を実現する方法の詳細な説明

序文この記事は主にMySQLコマンド階層検索ヘルプの使用に関する内容を紹介します。この記事のサンプル...

Centos7 に mysql 8.0.13 (rpm) をインストールする詳細なチュートリアル

yum か rpm か? yum によるインストール方法は非常に便利ですが、公式サイトから MySQ...

JavaScript 戦略パターンを使用してフォームを検証する方法

目次概要戦略パターンを使用しないフォーム検証戦略パターンを使用して最適化する戦略パターンの利点要約す...

Intelli Idea で Tomcat 設定が見つからない問題の解決方法

2日前に新しい会社に入社しました。その会社ではIntelli Ideaを使っています。Eclipse...

MySQLテーブルパーティショニングプログラムを変更する方法

MySQLテーブルパーティショニングプログラムを変更する方法1. サブテーブルの実装の原則は次のとお...