setInterval 实现页面轮询

本文实例讲述了JavaScript使用setInterval()函数实现简单轮询操作的方法。分享给大家供大家参考。具体分析如下:

概念:

轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称“程控输出入”(Programmed I/O)。
setInterval是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭。
由 setInterval 返回的ID值可用作 clearInterval 方法的参数。
提示: 1000 毫秒= 1 秒。

用法:

setInterval 动作的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象。可以使用本动作更新来自数据库的变量或更新时间显示。setInterval动作的语法格式如下:
setInterval(function,interval[,arg1,arg2,……argn])
setInterval(object,methodName,interval[,arg1,arg2,……argn])

语法:
在这里插入图片描述

具体实现:

附件批量下载实现示例:

    /*轮询*/
    sureToPigeonhole(data) {
      this.deptName = data.deptName
      this.categoryName = data.categoryName
      this.tabless.filter(e => {
        if (e.tableName == data.tableName) {
          e.isDownload = '正在打包中...'
          e.isDisplay = 'block'
          e.isDisable = true
        }
      })
      this.crud.refresh()
      const tableName = data.tableName
      const deptId = data.deptId
      const values = {
        deptId,
        tableName
      }
      var _this = this
      let a = 0
      function increment(v) {
        batchDownload(v).then(res => {
          a++;
          if (res.type == 'application/json') {
            const reader = new FileReader();
            reader.readAsText(res, 'utf-8');
            reader.onload = function (e) {
              let resul = JSON.parse(reader.result);
              console.log("json", resul);
              if (resul == 1) {
                clearInterval(intervalId)
                if (a == 1) {
                  _this.tabless.filter(e => {
                    if (e.tableName == data.tableName) {
                      e.isDownload = '附件批量下载'
                      e.isDisplay = 'none'
                      e.isDisable = false
                    }
                  })
                } else {
                  _this.tabless.filter(e => {
                    if (e.tableName == data.tableName) {
                      e.isDownload = '附件正在下载'
                      e.isDisable = true
                    }
                  })
                }
              }
              _this.crud.refresh()
            }
          }
          if (res.type == 'application/zip') {
            clearInterval(intervalId)
            console.log("我进来了")
            _this.export(res);
            _this.tabless.filter(e => {
              if (e.tableName == data.tableName) {
                e.isDownload = '附件批量下载'
                e.isDisplay = 'none'
                e.isDisable = false
              }
            })
            _this.crud.refresh()
          }
        }).catch(err => {
          clearInterval(intervalId)
          _this.tabless.filter(e => {
            if (e.tableName == data.tableName) {
              e.isDownload = '附件批量下载'
              e.isDisplay = 'none'
              e.isDisable = false
            }
          })
          _this.crud.refresh()
        });
      }
      var intervalId = setInterval(function () { increment(values) }, 1000)
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值