// 模拟一个异步任务,返回一个promise
function asyncTask(taskName, delay){
return new Promise((resolve) => {
console.log('任务开始' + taskName)
setTimeout(() => {
console.log('任务完成')
resolve('任务' + taskName + '结果')
}, delay)
})
}
// 创建任务队列函数
function taskQueue(tasks) {
let currentTaskIndex = 0
// 递归函数 用于处理队列下一个任务
function nextTask() {
if(currentTaskIndex < tasks.length) {
const { task, delay } = tasks[currentTaskIndex]
asyncTask(task, delay).then(() => {
currentTaskIndex++
nextTask() // 递归调用处理下一个任务
})
}
}
// 开始处理第一个任务
nextTask()
}
// 定义任务队列
const tasks = [
{task: 'T1', delay: 1000},
{task: 'T2', delay: 1500},
{task: 'T3', delay: 2000},
]
// 开始队列
taskQueue(tasks)