Tiny task management library which divide long task. Improve core web vitals and browser responsiveness.
npm install @esmj/taskThe @esmj/task is tiny package for divide long task to new tasks and improve browser responsiveness, user experience and INP (core web vitals) metric. The new tasks are creating only if it is need.
- Node 18+
``shell`
npm install @esmj/task
It works for both Javascript modules (ESM and CJS).
`javascript
import { autoYield, autoYieldStartPoint } from '@esmj/task';
(async () => {
const tasks = [
longRunnigTask1,
normalTask1,
normalTask2,
longRunnigTask2
];
autoYieldStartPoint()
for (const task of tasks) {
await autoYield()
await task();
}
})
`() => PromiseAPI
$3
Type: autoYield
Method divide long task to new tasks if it is need. If method is called without set start point with autoYieldStartPoint method then the first call of autoYield method is forceYield. If autoYield logic is turn off then returns immediately resolved Promise
Method create new task for every call, yield to next event loop (0 ms delay). $3
Type: () => Promise
Method create new task for every call, yield to next frame (16 ms delay).$3
Type: () => void
Method reset logic for creating new tasks.$3
Type: () => void
Method set start point for autoYield method so first call of autoYield method not create new task with forceYield.$3
Type: ({ autoEnable: boolean, autoShareContext: boolean }) => void`