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 をインストールするための詳細なチュートリアル (画像とテキスト)

推薦する

CSS で子 div の高さを親コンテナの残りのスペースに合わせる方法

1. フローティング方式を使用する効果画像: コードは次のとおりです: (.content の高さは...

VMware vCenter 6.7 のインストール プロセス (グラフィック チュートリアル)

背景当初は VMware の公式 Web サイトから 6.7 Vcenter をダウンロードしたかっ...

Win10 構成 Tomcat 環境変数チュートリアル図

設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...

Linux カーネル デバイス ドライバー キャラクタ デバイス ドライバー ノート

/******************** * キャラクターデバイスドライバー**********...

Vue.js アプリケーションのパフォーマンス最適化分析 + ソリューション

目次1. はじめに2. Vue JS のパフォーマンス最適化が必要な理由は何ですか? 3. Vueの...

JavaScript の BigIn 関数の共通プロパティをまとめます

目次1. 概要2. 属性1. 数学演算子2. 比較演算子3. ブール演算結論1. 概要BigInt ...

Vueはフィルターを使用して日付をフォーマットします

この記事では、フィルターを使用して日付をフォーマットするVueの具体的なコードを参考までに紹介します...

mysql.data.dll ドライバーのさまざまなバージョンの簡単な分析

ここにmysqlドライバmysql.data.dllがあります知らせ:ここではX86バージョンが多く...

Linuxカーネルの浮動小数点演算のサポートに関する簡単な説明

現在、ほとんどの CPU は浮動小数点ユニット (FPU) をサポートしています。FPU は、プロセ...

MySQLクラスタのDockerデプロイメントの実装

シングルノードデータベースの欠点大規模なインターネットプログラムはユーザーベースが大きいため、アーキ...

mysql5.6 以前のデータベースで json をクエリする方法

MySQLにデータを保存するとき、乱雑であまり使用されないデータがJSONフィールドに投げ込まれるこ...

企業サイトとコラム辞典 中国語と英語の比較 中国語と英語のバイリンガル企業サイトを作る仲間は

名前キャラクター名前キャラクター情報ニューステクノロジー技術スキンケアスキンケア補う補う香水香水化粧...

Mysql で自動増分主キー ID を更新するときに問題が発生しました

目次自動インクリメント ID を更新する理由は何ですか?質問解決方法これは私が知っている問題ですが、...

使用状況分析を備えたMySQL

持つことの使用法having 句を使用すると、グループ化後にさまざまなデータをフィルター処理できます...

アクセス速度を上げるためにウェブサイトを最適化する方法の更新

最近、同社はitpubを皮切りに、コーポレートウェブサイト傘下の全サイトの評価を開始した。そのために...