任务队列的中断和恢复

任务队列的中断和恢复
Aiden Kao题目描述
1 | /** |
实现思路
- 函数基本结构
根据题目要求,我们需要返回包含 start 和 pause 两个方法的对象。start 方法用于启动任务队列的执行,pause 方法用于暂停执行。
1 | function processTasks(...tasks) { |
- 任务状态管理
引入 isRunning 状态变量来跟踪当前是否正在执行任务。这确保了任务的原子性,即任务只能在两个任务之间被中断。
1 | function processTasks(...tasks) { |
- 结果收集
添加 results 数组来存储每个任务的执行结果。这个数组需要在多次调用 start 方法时保持状态。
1 | function processTasks(...tasks) { |
- 任务执行逻辑
实现具体的任务执行流程,使用 async/await 确保异步任务的顺序执行,并将每个任务的结果存入 results 数组。
1 | function processTasks(...tasks) { |
- 中断检查机制
在每个任务执行后检查 isRunning 状态,如果被暂停则立即终止执行流程。
1 | function processTasks(...tasks) { |
- 任务进度记录
使用索引变量 i 来记录当前执行到的任务位置,确保暂停后可以从中断处继续执行。
1 | function processTasks(...tasks) { |
- Promise 封装
题目要求所有任务全部完成后可以得到每个任务的执行结果,也就是在所有任务还没全部完成前,应该返回一个 pending 状态的 Promise。因此我们将整个执行流程封装在 Promise 中,确保在所有任务完成前返回 pending 状态的 Promise,完成后 resolve 最终结果。
1 | function processTasks(...tasks) { |
最终代码
1 | /** |
案例测试
1 |
|