Function funTaskRun

  • 分片执行任务(使用宏任务执行)
    这里之所以不使用每次任务后判断执行时间是否超过17ms来自动中断任务,是因为performance.now()是个重方法,它的执行时间大概比计算慢1000倍,这样导致整个任务周期内,80%的时间用于时间比较。

    Type Parameters

    • T

    Parameters

    • tasks: number | T[]

      任务数组或任务的执行次数

    • numberPerTime: number

      每个时间片执行的任务数量,需要自行评估该数量(可以使用performance.now()计算大致时间,尽量控制在17ms)

    • taskHandler: TaskHandlerType<T>

      执行任务的具体方法,两个参数,task任务,index任务对应的序号。

    • OptionalfinishCallback: TaskDoneType

      执行完成回调,一个参数,isBreak是否被中断

    Returns (() => void)

    任务中断方法

      • (): void
      • Returns void

    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() 函数