Skip to content

Latest commit

 

History

History
153 lines (102 loc) · 2.7 KB

README.md

File metadata and controls

153 lines (102 loc) · 2.7 KB

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.