任务数组或任务的执行次数
每个时间片执行的任务数量,需要自行评估该数量(可以使用performance.now()计算大致时间,尽量控制在17ms)
执行任务的具体方法,两个参数,task任务,index任务对应的序号。
Optional
finishCallback: TaskDoneType执行完成回调,一个参数,isBreak是否被中断
任务中断方法
const tasks = [1, 2, 3, 4, 5];
const taskHandler = (task: number) => {
console.log(`Processing task ${task}`);
};
const finishCallback = (isBreak: boolean) => {
if (isBreak) {
console.log('Execution interrupted');
} else {
console.log('All tasks completed');
}
};
const breakExec = funTaskRun(tasks, 2, taskHandler, finishCallback);
// 执行任务...
// 如果需要中断执行,可以调用 breakExec() 函数
分片执行任务(使用宏任务执行)
这里之所以不使用每次任务后判断执行时间是否超过17ms来自动中断任务,是因为performance.now()是个重方法,它的执行时间大概比计算慢1000倍,这样导致整个任务周期内,80%的时间用于时间比较。