[js] 如何使用Promise模拟任务队列?

haizhilin2013
2024-10-09 05:09:44 星期三
js
                    
                        
如何使用Promise模拟任务队列?
Comments per page
< Page 1 / 1 >
2720768239 2024-11-30 06:56:52
// 模拟一个异步任务,返回一个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)
排行榜
今日答题答题排行
    未答的题
    更多>
      【关注作者公众号】 以面试驱动学习--前端剑解
      【公众号推荐】 不折腾的前端和咸鱼有什么区别

      学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布前端知识点(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!欢迎大家关注3+1开源项目!希望大家每人去学习与思考!(不要为了谁而来,要为自己而努力!

      【关注官方公众号】 每天4:30-5:00推送
      【公众号推荐】 一起折腾前端算法
      【微信学习群】 备注3+1