Skip to content

Task

用于执行任务的相关函数。

paralleTask

用于并发执行异步任务,可以指定并发数量,返回一个promise对象。

TIP

mockPromiseTasks 函数用于生成一组异步任务

ts
import { paralleTask, mockPromiseTasks } from '@strive-molu/utils';

// 默认并发数为2
paralleTask(mockPromiseTasks(4)).then(() => {
  console.log('所有任务执行完毕');
});

// 指定并发数
paralleTask(mockPromiseTasks(10), 4).then(() => {
  console.log('所有任务执行完毕');
});

performTask

自定义执行任务时机函数。

ts
import { performTasks, idlePerformTasks, countPerformTasks, mockPromiseTasks } from '@strive-molu/utils';

// 指定任务在1s后执行
performTasks(mockPromiseTasks(10, true), (chunk) => {
  setTimeout(() => {
    chunk(() => true);
  }, 1000);
});

以下函数基于performTask实现。

ts
import { idlePerformTasks, countPerformTasks, mockPromiseTasks } from '@strive-molu/utils';

// 基于 requestIdleCallback 来控制任务执行
idlePerformTasks(mockPromiseTasks(10, true));

// 控制每次执行任务的数量,以及任务执行间隔
countPerformTasks(mockPromiseTasks(10, true), 5, 1000);

形参

paralleTask

名称说明类型默认值
tasks异步任务列表array
paralleCount同时执行的最大任务数number2

performTask

名称说明类型默认值
tasks异步任务列表array
scheduler同时执行的最大任务数function

idlePerformTasks

名称说明类型默认值
tasks异步任务列表array

countPerformTasks

名称说明类型默认值
tasks异步任务列表array
count同时执行的最大任务数number
delay每批次任务执行时时间number

TS 类型

点我查看代码
ts
interface Task {
  (...args: any[]): void;
}

interface PromiseTask {
  (...args: any[]): Promise<any>;
}

interface Scheduler {
  (chunk: (isGoOn: () => boolean) => void): void;
}