主页 > 人工智能  > 

前端面试题-异步任务队列控制

前端面试题-异步任务队列控制

前端面试题-异步任务队列控制

感觉面试的心里素质还是不够好,当时用的是promise.race思路,面完回来手撕了一下发现是自己想复杂了。 大致题意 1000个请求,每次发送6个,当请求发送成功时,马上发起下一个任务使得当前运行任务一直保持在6个

回来手撕了一下基本可以满足题意

const task_1 = () => { return new Promise((resolve, reject) => { setTimeout(() => { console.log('第一个任务执行完成') resolve() }, 1000); }) } const task_2 = () => { return new Promise((resolve, reject) => { setTimeout(() => { console.log('第二个任务执行完成') resolve() }, 2000); }) } const task_3 = () => { return new Promise((resolve, reject) => { setTimeout(() => { console.log('第三个任务执行完成') resolve() }, 3000); }) } const task_4 = () => { return new Promise((resolve, reject) => { setTimeout(() => { console.log('第四个任务执行完成') resolve() }, 4000); }) } const task_5 = () => { return new Promise((resolve, reject) => { setTimeout(() => { console.log('第五个任务执行完成') resolve() }, 5000); }) } const task_6 = () => { return new Promise((resolve, reject) => { setTimeout(() => { console.log('第六个任务执行完成') resolve() }, 6000); }) } const totalTask = [task_1, task_2, task_3, task_4, task_5, task_6] const limit = 2 const addTask = () => { if(!totalTask.length) return totalTask.shift()().then(doneTask => addTask()) } totalTask.slice(0, limit).forEach((task,taskIndex) => { task().then(doneTask => addTask()) }) // 前limit个已经执行完成,从任务列表中去除 totalTask.splice(0,limit)
标签:

前端面试题-异步任务队列控制由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“前端面试题-异步任务队列控制