deep-aplus
Resolve a whole structure of promises
This small library is a promise-library agnostic function that resolves a whole structure
or objects, arrays, promises and values to a single promise in which the whole structure is
resolved.
Unlike other libraries like q-deep, resolve-deep and
swear, this library is designed to work without dependencies to any promise library
(and also without any other dependencies).
Note: There is no cycle check. You have to check for cycles yourself before passing the
structure to the function
Installation
npm install deep-aplus
Usage
The following example demonstrates how to use this module:
import { deepAplus } from "../dist/index.mjs";
function P(value) {
return new Promise((resolve) => setTimeout(() => resolve(value), 1));
}
console.log(await deepAplus(2));
console.log(await deepAplus(P(2)));
console.log(await deepAplus({ a: 1, b: P(2) }));
console.log(await deepAplus({ a: 1, b: [2, P(3)] }));
console.log(await deepAplus({ a: 1, b: { c: 2, d: P(3) } }));
console.log(await deepAplus({ a: 1, b: P([2, P(3)]) }));
console.log(await deepAplus({ a: 1, b: P([2, P(3)]) }));
console.log(await deepAplus({ a: 1, b: P({ c: 2, d: P(3) }) }));
class A {
a = 2;
b = P(3);
}
console.log(await deepAplus(new A()));
License
deep-aplus
is published under the MIT-license.
See LICENSE.md for details.
Release-Notes
For release notes, see CHANGELOG.md
Contributing guidelines
See CONTRIBUTING.md.