最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • vue轮询解决方案

    正文概述 掘金(无知散人)   2021-06-29   378

    轮询的理解     其实轮询的重点在于间隔多少时间执行一次,而并非循环本身。ajax是异步请求,从发起请求到接受到响应即为一个完整的过程,这个过程所需要的时间是无法预料的,说的极端点,若请求所需的时间超过了我们轮询的间隔时间,那么是会出现很多问题的,所以轮询的间隔应该是在确保这个请求过程完成的基础之上的,这也更符合逻辑。


    业务描述:

    1. 页面初始化显示第一页数据,随后每隔十秒当前页数据刷新
    2. 更改筛选条件或者更改页码直接刷新数据,随后每个十秒当前也数据刷新

    业务逻辑点分析:

    1. 手动调用时,立即执行发起请求
    2. 随后每隔十秒执行一次,刷新一次列表

    实现思路

    1. 直接先调用请求
    2. 在请求的成功回调函数中设置定时器setTimeout
    3. 在定时器内重复1.2操作
    4. 将1.2.3步骤封装为递归函数
    // 轮询方法
        polling (page) {
          this.getWorks(page).then(res => {
            this.pollingST = setTimeout(() => {
              clearTimeout(this.pollingST)
              this.polling(page)
            }, 10000)
          })
        }
    

    为什么不采用setInterval setInterval的功能看似是完美符合轮询的概念,若我们的操作是同步代码,那么使用setInterval是没有任何问题的,问题就出在setInterval不够灵活,我们无法得知上一次请求是否已经完毕。所以setTimeout会更好一些。

    需要注意的地方 在轮询中我将定时器用pollingST变量记录了下来,每次执行前必须先清除上一个定时器,因为递归的调用是在定时器内部,所以通过清除定时器就能很方便的结束轮询


    完整伪代码

    <script>
    export default {
      data () {
        return {
          pollingST: null
        }
      },
      methods: {
        // 分页change事件
        pageChange (params) {
          // 清除现有定时器
          clearTimeout(this.pollingST)
          // 调用轮询
          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 () {
        // 调用轮询
        this.polling({ page: 1, pageSize: 5 })
      }
    }
    </script>
    

    起源地下载网 » vue轮询解决方案

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元