接口在5秒之后未返回数据,自动加载百分比

   //定义变量
    data(){
        return {
            timeOutObj: {},
            indexTime: 1, //定义时间初始值
            indexTimeInt: {},//定义时间计时器
            process: "0%", //定义进度百分比
            setAdd: {},//定义百分比累加计时器
        }
    }

法一:定时器setInterval实现 

        //开启计时器,只需要在调用接口前开启计时器
        openSetInterVal() {
            var self = this
            self.indexTime = 1 //定义一个初始值,用来计算秒数
            self.indexTimeInt = setInterval(() => { //定义一个计时器,
                if (self.indexTime >= 5) { //如果超过5秒执行,加载框
                    self.loading = true
                    self.indexTime = 1 //并初始化计时值
                    //下面是自动加载百分比,从0-95
                    var num = 1;
                    self.setAdd = setInterval(function () {
                        var len = 95;//显示的最大数值,可以随意设置
                        if (num >= len) { //如果大于95,就关闭计时器
                            clearInterval(self.setAdd)
                            clearInterval(self.indexTimeInt)
                        } else { //否则就加1
                            num += 1;
                        }
                        self.process = num + "%"
                    }, 20)
                } else { //没有超过5秒,就每1秒indexTime加1
                    self.indexTime += 1
                }
            }, 1000)
        },
        // 关闭计时器,在接口成功返回数据时关闭计时器
        closeSetInterval() {
            this.indexTime = 1
            this.loading = false
            clearInterval(this.indexTimeInt)
            clearInterval(this.setAdd)
        },

法二:定时器setTimeout实现

用setTimeout实现,就是直接时间设置为5秒,保存接口返回的response数据,判断是否为空,如果为空,则说明接口响应时间大于5秒,就加载进度条,否则说明反应时间在5秒之内,不作操作。

            var self = this
            setTimeout(() => {
                if (JSON.stringify(self.timeOutObj) == '{}') {
                    self.loading = true
                    var num = 1;
                    self.setAdd = setInterval(function () {
                        var len = 95;//显示的长度
                        if (num >= len) {
                            clearInterval(self.setAdd)
                        } else {
                            num = parseInt(num, 10) + 1;
                        }
                        self.process = num + "%"
                    }, 20)
                }
            },5000)

 下图的关闭定时器是针对法一,保存返回的的response数据是针对法二。

用的是elementui 的loading加载

  

 注意:这里的百分比是自己造的假数据,模拟进度条。如果需要真实数据,需要后台配合

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suoh's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值