最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue輪詢請求解決方案的完整實例

 更新時間:2021年07月01日 10:36:06   作者:無知散人  
項目開發(fā)中需要做一個輪詢,所以將實現(xiàn)的過程記錄了一下,下面這篇文章主要給大家介紹了關(guān)于vue輪詢解決方案的相關(guān)資料,需要的朋友可以參考下

輪詢的理解

其實輪詢的重點在于間隔多少時間執(zhí)行一次,而并非循環(huán)本身。ajax是異步請求,從發(fā)起請求到接受到響應(yīng)即為一個完整的過程,這個過程所需要的時間是無法預(yù)料的,說的極端點,若請求所需的時間超過了我們輪詢的間隔時間,那么是會出現(xiàn)很多問題的,所以輪詢的間隔應(yīng)該是在確保這個請求過程完成的基礎(chǔ)之上的,這也更符合邏輯。

業(yè)務(wù)描述:

  1. 頁面初始化顯示第一頁數(shù)據(jù),隨后每隔十秒當(dāng)前頁數(shù)據(jù)刷新
  2. 更改篩選條件或者更改頁碼直接刷新數(shù)據(jù),隨后每個十秒當(dāng)前也數(shù)據(jù)刷新

業(yè)務(wù)邏輯點分析:

  1. 手動調(diào)用時,立即執(zhí)行發(fā)起請求
  2. 隨后每隔十秒執(zhí)行一次,刷新一次列表

實現(xiàn)思路

  1. 直接先調(diào)用請求
  2. 在請求的成功回調(diào)函數(shù)中設(shè)置定時器setTimeout
  3. 在定時器內(nèi)重復(fù)1.2操作
  4. 將1.2.3步驟封裝為遞歸函數(shù)
// 輪詢方法
    polling (page) {
      this.getWorks(page).then(res => {
        this.pollingST = setTimeout(() => {
          clearTimeout(this.pollingST)
          this.polling(page)
        }, 10000)
      })
    }

為什么不采用setInterval

setInterval的功能看似是完美符合輪詢的概念,若我們的操作是同步代碼,那么使用setInterval是沒有任何問題的,問題就出在setInterval不夠靈活,我們無法得知上一次請求是否已經(jīng)完畢。所以setTimeout會更好一些。

需要注意的地方

在輪詢中我將定時器用pollingST變量記錄了下來,每次執(zhí)行前必須先清除上一個定時器,因為遞歸的調(diào)用是在定時器內(nèi)部,所以通過清除定時器就能很方便的結(jié)束輪詢

完整偽代碼

<script>
export default {
  data () {
    return {
      pollingST: null
    }
  },
  methods: {
    // 分頁change事件
    pageChange (params) {
      // 清除現(xiàn)有定時器
      clearTimeout(this.pollingST)
      // 調(diào)用輪詢
      this.polling(params)
    },
    // 請求接口方法
    getWorks () {
      return new Promise(resolve => resolve({}))
    },
    // 輪詢方法
    polling (params) {
      this.getWorks(params).then(res => {
        this.pollingST = setTimeout(() => {
          clearTimeout(this.pollingST)
          this.polling(params)
        }, 10000)
      })
    }
  },
  created () {
    // 調(diào)用輪詢
    this.polling({ page: 1, pageSize: 5 })
  },
  destroyed () {
    clearTimeout(this.pollingST)
  }
}
</script>

總結(jié)

到此這篇關(guān)于vue輪詢解決方案的文章就介紹到這了,更多相關(guān)vue輪詢解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

最新評論

万安县| 宿松县| 横峰县| 林州市| 正安县| 彭阳县| 望城县| 黄骅市| 彭泽县| 宜州市| 富平县| 大宁县| 五寨县| 广昌县| 桃园市| 吉木乃县| 锦屏县| 山丹县| 湘阴县| 永州市| 禄丰县| 永兴县| 康平县| 怀柔区| 拜城县| 东源县| 荔浦县| 瑞安市| 元阳县| 江门市| 云安县| 赣州市| 乌拉特中旗| 都兰县| 柳州市| 社旗县| 嘉义市| 三台县| 鹤壁市| 沙洋县| 蕲春县|