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

1.0.3 • Public • Published

limit-execution

This package offers a way to easly limit any promise execution having an optional onCancel callback triggered once the promise exceeds the given "limit".

API

limitExecution(promise: Promise, limit: number, onCancel: () => void): Promise

  • Limits a given promise execution under a given time executing an "onCancel" callback if exceeded.

Throws: ExecutionLimitError if time exceeds limit.

Parameters

Parameter Type Description
promise Promise<T> The promise to limit it's execution time.
limit number The time limit to set provided in milliseconds
onCancel () => void a callback to execute once promise execution exceeds given limit

Returns:

Promise<T>

Example:

Simple promise limit

import { limitExecution, ExecutionLimitError } from 'limit-execution';

const lateResolvingPromise = () => new Promise(resolve => (
    setTimeout(resolve, 2000)
));

const main = async() => {
    try {
        await limitExecution(
            lateResolvingPromise(),
            1000
        );
    } catch (error) {
        if (error instanceof ExecutionLimitError) {
            // Do something
        }
    }
};

Example:

Aborting axios request

import axios from 'axios';
import { limitExecution } from 'limit-execution';

/**
 * Limits a given axios get call, aborts if exceeds 500ms.
 * @returns {Promise<*>}
 */
const limitAxiosCall = async() => {
    const controller = new AbortController();
    
    const { data } = await limitExecution(
        axios.get('https://jsonapi.org/examples/', {
            signal: controller.signal
        }),
        500,
        () => controller.abort()
    );

    return data;
}

Package Sidebar

Install

npm i limit-execution

Weekly Downloads

1

Version

1.0.3

License

MIT

Unpacked Size

12.4 kB

Total Files

13

Last publish

Collaborators

  • pdedg