内置方法setInterval()
实际用法:调用一个任务接口,返回一个id, 然后用id来多次调取查询接口,查询接口根据返回参数status来进行判断任务的进度,如任务进行中status为1,任务完成status为0,任务失败status为2
const request = require('superagent');
# 定义一个队列来存储任务id
const data = [];
# 调取任务接口,将返回id加入data中
async function make(){
let url = 'xxxx';
let res = await request.post(url);
if(res.body && res.body.id){
data.push(res.body.id)
}
}
# 查询任务结果,如果达到最终状态就删除队列中的任务
async function get(id){
let url = 'xxx';
let res = await request.get(url).query({id:id});
res = res.body;
if(res && res.status){
if(status === 0 || status === 2){
let index = data.indexOf(id);
index >= 0 && video_tasks.splice(index, 1);
# 可以将结果存入数据库等
}
}
}
make();
setInterval(() => data.forEach(get), 2 * 1000);