nn-promise-ex
v1.0.0
Published
Provides additional functions for working with promises.
Readme
Promise Ex
Provides additional functions for working with promises.
Function: createPromise
The createPromise function will create a promise and return it along with the resolve and reject functions.
Signature
createPromise<VALUE = unknown> () => iPromiseSet<VALUE>Return
Returns the promise, and resolve and reject functions.
Usage
const { promise, resolve, reject } = createPromise<string>();
promise.then(console.info);
resolve('Supercalifragilisticexpialidocious!');Function: isPromiseLike
The isPromiseLike checks if a value looks like a promise (i.e. has then and catch functions).
Signature
isPromiseLike<VALUE> (value: unknown) => value is Promise<VALUE>Return
Returns true if the value looks like a promise.
Usage
isPromiseLike('Supercalifragilisticexpialidocious!') // Return false
isPromiseLike(Promise.resolve('Supercalifragilisticexpialidocious!')) // Return trueFunction: promiseSingle
Defines a callback that will only allow single instance to run at a time. If a promise is already running, it will return the same promise.
Signature
promiseSingle<ACTION> (action: Function) => Promise<unknown> | unknownReturn
Returns a function. Calling this function will return a promise. Subsequent calls will be ignored until the current promise has been resolved.
Usage
const action = promiseSingle(async (src: string) =>
{
const res = await fetch(src);
return await res.json();
});
action('https://www.example.com');
action('https://www.example.com'); // Ignored because first call to action is still pending. Await the first call to make subsequent calls.Function: promiseChain
Defines a callback that will call subsequent calls sequentially. If a promise is already running, it will return the same promise.
Signature
promiseChain<ACTION> (action: Function) => Promise<unknown> | unknownReturn
Returns a function. Calling this function will return a promise. Subsequent calls will be queued and called sequentially after the previous call has been resolved.
Usage
const action = promiseChain(async (src: string) =>
{
const res = await fetch(src);
return await res.json();
});
action('https://www.example.com');
action('https://www.example.com'); // Ignored because first call to action is still pending. Await the first call to make subsequent calls.Type: tOptionalPromise
Defines an scenario where a value could be a promise or raw value.
tOptionalPromise<VALUE = unknown> = Promise<VALUE> | VALUETypes: iPromiseSet, tPromiseResolveFn, tPromiseRejectFn
type tPromiseResolveFn<VALUE = unknown> = Parameters<ConstructorParameters<typeof Promise<VALUE>>[0]>[0];
type tPromiseRejectFn<VALUE = unknown> = Parameters<ConstructorParameters<typeof Promise<VALUE>>[0]>[1];
interface iPromiseSet<VALUE>
{
promise: Promise<VALUE>;
resolve: tPromiseResolveFn<VALUE>;
reject: tPromiseRejectFn<VALUE>;
}