1.0.3 • Published 2 years ago

limit-execution v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

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

ParameterTypeDescription
promisePromise<T>The promise to limit it's execution time.
limitnumberThe time limit to set provided in milliseconds
onCancel() => voida 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;
}
1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago