定时器处理真实进度条进程

需求:面对耗时任务,后端有个获取任务进度以及状态的接口,返回值有任务状态,进度值,以及结果。需要前端实时展示进度。
方案:进度条+定时器

appApi.getInformation = function(id,callback) {
    const clean = function() {
        if (appApi.calcTimer) {
            appApi.calcTimer = clearInterval(appApi.calcTimer);
        }
    };
    const resolve = function(data) {
 
        if (typeof data === 'object' && data) {
            if (data.status === 'Finished' || data.status === 'Error') {
                clean();
            } 
            callback && callback(data);
            return;
        }
        clean();
        callback && callback();
    };
    
    clean();
    appApi.calcTimer = setInterval(function() {
        //appApi.get_progress
        axios.get(encodeURI(`${appApi.get_information}${id}/info`)).then(({data})=>{
            resolve(data.obj)
        }).catch(resolve);
    }, 3e3)
},

接口写在定时器中,每3秒发送一次请求(时间可自定义,我这里请求比较耗时),对每次请求完的数据进行判断,如果状态为finished 或者 error时要清除定时器,终止发送请求。进度值动态赋值给进度条。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值