需求:面对耗时任务,后端有个获取任务进度以及状态的接口,返回值有任务状态,进度值,以及结果。需要前端实时展示进度。
方案:进度条+定时器
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时要清除定时器,终止发送请求。进度值动态赋值给进度条。

6349

被折叠的 条评论
为什么被折叠?



