假如有一个任务列表taskList,从这个列表中弹出一个任务id,到后台获取数据,如果已经完成那么处理,如果还没完成,那么再次到后台获取数据,直到完成。
实现方式如下:
function getTaskData(task,taskList,recode){
console.log('获取task-'+recode+':'+task)
$.ajax({
'url':'/jgwork/task_get',
'type':'POST',
'async':false,
'dataType':'json',
'data':{'type':'getTaskDataFromRedis','task':task},
'success':function(result)
{
if (result.code){
if(result.isComplete){ //任务完成
$($('#taskprogress div.bs-wizard-step')[recode-1]).removeClass('disabled').addClass('complete')
//do something here
setTimeout(function(){generateTask(taskList,recode)},1000) //获取下一个任务
}
else { //任务未完成
setTimeout(function(){getTaskData(task,taskList,recode)},300) //继续获取数据
}
}else {
showError(result.msg)
}
}
})
}
//从任务列表中弹出一个任务
function generateTask(taskList,recode=0){
if (taskList.length>0) {
task = taskList.shift()
getTaskData(task,taskList,recode+1)
}else {
$($('#taskprogress div.bs-wizard-step')[recode]).removeClass('disabled').addClass('complete')
}
}