Giter Club home page Giter Club logo

esmj-task's Introduction

Task

The @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.

Requirements

  • Node 18+

Install

npm install @esmj/task

Usage

It works for both Javascript modules (ESM and CJS).

import { autoYield, autoYieldStartPoint } from '@esmj/task';

(async () => {
  const tasks = [
    longRunnigTask1,
    normalTask1,
    normalTask2,
    longRunnigTask2
  ];

  autoYieldStartPoint()
  for (const task of tasks) {
    await autoYield()
    await task();
  }
})

API

autoYield()

Type: () => Promise<void> Method divide long task to new tasks if it is need. If autoYield 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.

forceYield()

Type: () => Promise<void> Method create new task for every call, yield to next event loop (0 ms delay).

nextFrameYield()

Type: () => Promise<void> Method create new task for every call, yield to next frame (16 ms delay).

autoYieldReset

Type: () => void Method reset logic for creating new tasks.

autoYieldStartPoint

Type: () => void Method set start point for autoYield method so first call of autoYield method not create new task with forceYield.

setConfig

Type: ({ autoEnable: boolean, autoShareContext: boolean }) => void Method config package autoEnable: turn on/off autoYield logic and autoShareContext: turn on/off shared context through global variable.

esmj-task's People

Contributors

mjancarik avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.