November: Procrastination Month

    repeatify
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.0 • Public • Published

    Repeatify

    JavaScript/TypeScript library to run repetitive tasks with throttle control and other cool features

    image

    Install

    npm install repeatify

    Usage

    import { throttle } from 'repeatify';
    
    function timeConsuming() {
     return new Promise((resolve) => {
      setTimeout(() => {
       resolve({ data: { datetime: Date.now() } });
      }, 200);
     });
    }
    
    const options = { intervalLimit: 1000, repeat: 10 };
    
    await throttle(timeConsuming, options, {
     update: (status) => {},
     complete: (result) => {},
     error: (error) => {},
    });

    API

    throttle(task, options, callbacks?)

    Execute a promise a certain number of times with a fixed iteration interval.

    task

    Type: promise

    Promise that will be executed

    function timeConsuming(context) {
     return new Promise((resolve) => {
      setTimeout(() => {
       resolve({ data: { datetime: Date.now() } });
      }, 200);
     });
    }

    The context argument provides contextual data of the running task.

    currentIteration

    current iteration counter

    options

    a copy of the original options object

    returning object

    The data object in the returning object may contain any information to be received in the update event callback. Example:

    { data: { datetime: Date.now() }

    Add abort in the returning object to exit the process at the current cycle. Example:

    { abort: true, data: { datetime: Date.now() }

    options

    Type: object

    Options object to set execution parameters

    {  repeat: 10, intervalLimit: 1000}

    repeat

    The number of times to execute the given promise

    intervalLimit

    Sets the minimum interval for the execution

    callbacks

    Type: object

    Callbacks to handle events

    {
     update: (status) => {},
     complete: (result) => {},
     error: (error) => {},
    }

    update (callback)

    Triggered at the end of every cycle. Provides an object with data related to the running task.

    status object

    {
      currentIteration: 1,
      elapsedTime: 203,
      finalElapsedTime: 1000,
      throttleApplied: 797,
      taskResult: { data: { datetime: 1642197014924 } }
    }

    complete (callback)

    Triggered when execution has finished. It provides an object with result data.

    result object

    {
      exitMode: 0,
      totalElapsedTime: 10171,
      options: { intervalLimit: 1000, repeat: 10 }
    }

    exitMode: Indicates how the execution ended; 0 = Normal (at last cycle), 1 = Abort (as per request).

    totalElapsedTime: The final duration time of the execution.

    options: This object is a copy of the original options object passed as argument.

    error (callback)

    This callback method gets triggered if there is an error on the task execution.

    Install

    npm i repeatify

    DownloadsWeekly Downloads

    1

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    12 kB

    Total Files

    9

    Last publish

    Collaborators

    • evert-arias