R
fn

useWebWorkerFn

v0.0.15testeddemo

Run an expensive function in a transient Web Worker off the main thread

Examples

ts
const { workerFn, workerStatus } = useWebWorkerFn((n: number) => {
  let sum = 0;
  for (let i = 0; i < n; i++) sum += i;
  return sum;
});
const total = await workerFn(1e9);
ts
const { workerFn } = useWebWorkerFn(dates => dayjs(dates[0]).isBefore(dates[1]), {
  dependencies: ['https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js'],
  timeout: 5000,
});

Demo

Loading demo…

Signature

ts
export function useWebWorkerFn<T extends AnyFunction>(
  fn: T,
  options: UseWebWorkerFnOptions ={ ... }

Type Parameters

Textends AnyFunction

Parameters

ParameterTypeDescription
fnTThe function to execute inside the worker (must be self-contained or rely on `dependencies`/`localDependencies`)
options?UseWebWorkerFnOptionsWorker dependencies, timeout and error hook

Returns

UseWebWorkerFnReturn<T>`{ workerFn, workerStatus, workerTerminate, isSupported }`