6.0.0 • Published 1 year ago
promist v6.0.0
promist
A dependable promises and async utility belt.
Install
Documentation
- Classes: a set of promise classes.
ExtensiblePromise: a safe to extend promise class.CancellablePromise: a cancellable promise.DeferredPromise: an externally actionable promise.LazyPromise: a promise that will not execute until awaited.SyncPromise: a promise with values synchronously available and operable.
- Creation: a set of promise returning conveniency functions.
- Iterables: a set of functions to deal with iterables of promises.
- Utils: a set of utility functions.
control: for async flow control via generators.isPromise: a type guard for promises.isPromiseLike: a type guard for thenable objects.
Utils
control(test: Function, generator: Function): Function
Used to control async flow. It returns a promise returning function taking the same arguments as generator.
test: a test function (can beasync) that will be run before calling eachnext()ongenerator, with signature() => Promise<boolean | Error> | boolean | Error. It can return:false:generatorwill not continue execution (it will never resolve).true:generatorwill continue execution until the nextyield.Error:generatorcall will return a rejected promise. The same behavior can be expected if the error is thrown instead of returned.
generator: must be a generator function. Within it, you'd useyieldas you wouldawaitfor anasyncfunction.
import { control } from 'promist';
function* gen(n) {
// You can use yield as you'd use await
let res = yield Promise.resolve(n * 2);
// test() will be called here,
// if it returns falsy or throws an error this next line won't execute
res = yield Promise.resolve(res * 5);
return res;
}
const willContinue = control(() => true, gen);
const willNotContinue = control(() => false, gen);
const willReject = control(() => new Error('An error ocurred'), gen);
willContinue(1).then(console.log); // 10
willNotContinue(2).then(console.log); // Will not resolve
willReject(3).then(console.log).catch(console.error); // Error: An error occurredisPromise(value: any): boolean
Returns true if value is a thenable and catchable, false otherwise.
value: object to test.
import { isPromise } from 'promist';
if (isPromise(promise)) {
promise.then(() => { /* ... */ }).catch(() => { /* ... */ });
}isPromiseLike(value: any): boolean
Returns true if value is a thenable, false otherwise.
value: object to test.
import { isPromiseLike } from 'promist';
if (isPromiseLike(promise)) {
promise.then(() => { /* ... */ });
}6.0.0
1 year ago
5.1.0
4 years ago
5.0.0
4 years ago
4.0.0
5 years ago
3.0.0
6 years ago
2.0.2
6 years ago
2.0.1
6 years ago
2.0.0
6 years ago
1.0.0
6 years ago
0.7.0
7 years ago
0.6.0
7 years ago
0.5.3
7 years ago
0.5.2
7 years ago
0.5.1
7 years ago
0.5.0
7 years ago
0.4.3
7 years ago
0.4.2
7 years ago
0.4.1
7 years ago
0.4.0
7 years ago
0.3.1
7 years ago
0.3.0
7 years ago
0.2.0
7 years ago
0.1.3
7 years ago
0.1.2
7 years ago
0.1.1
7 years ago
0.1.0
7 years ago