Compass helpers for browser platforms
    Preparing search index...

    Function createWorkerTask

    • Type Parameters

      • T extends AsyncFunction<unknown[], unknown>

      Parameters

      • asyncFunction: T

        要在 Worker 中运行的(异步)函数

      • options: WorkerTaskOptions = {}

        配置选项

        • timeout

          任务超时时间(毫秒),默认不设置超时

        • transferable

          是否自动检测可传输对象,默认为 true

      Returns WorkerTask<T>

      返回一个可以调用的 Worker 任务函数,包含 terminate 和 isActive 方法

      将异步函数移到独立的 Web Worker 线程中执行

      // 基本用法
      const workerAdd = createWorkerTask((a: number, b: number) => a + b);
      const result = await workerAdd(1, 2); // 3

      // 异步函数
      const workerFetch = createWorkerTask(async (url: string) => {
      const response = await fetch(url);
      return response.json();
      });
      const data = await workerFetch('/api/data');

      // 复杂计算任务
      const workerCalculate = createWorkerTask((nums: number[]) => {
      return nums.reduce((sum, num) => sum + Math.pow(num, 2), 0);
      });
      const result = await workerCalculate([1, 2, 3, 4, 5]);

      // 带超时的任务
      const workerWithTimeout = createWorkerTask(
      (data: unknown[]) => expensiveCalculation(data),
      { timeout: 5000 }
      );

      // 清理资源
      workerAdd.terminate();