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.

Dependencies (0)

    Dev Dependencies (10)

    Package Sidebar

    Install

    npm i repeatify

    Weekly Downloads

    4

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    12 kB

    Total Files

    9

    Last publish

    Collaborators

    • evert-arias