Promizr is a modern Promise utility library which provides simple and powerful functions to manage complex async JavaScript.
Promizr provides more than 60 functions including the usual collections operations (map, reduce, filter, each…) as well as some common patterns for asynchronous control flow (parallel, series, waterfall…). It also include Queues to manage the maximum number of tasks to run concurrently.
Using NPM:
$ npm install promizrYou could use promizr in different context.
<script type="text/javascript" src="node_modules/promizr/dist/promizr.min.js"></script>import { each } from "promizr";
await each([...], async (item) => { ... });const promizr = require("promizr");
await promizr.each([...], async (item) => { ... });// require.config.js
requirejs.config({
paths: {
promizr: 'node_modules/promizr/dist/promizr.min'
}
});
// module.js
define(["promizr"], function(promizr) {
promizr.each([...], async (item) => { ... }).then(...);
});// contents will be an array containing the content of each file
const contents = await promizr.map(['file1.json','file2.json','file3.json'], async (src) => {
const res = await fetch(`https://host/${src}`);
return res.json();
});
// entities will be an array containing an array of ids of public entities
const entities = await promizr.filter(['entity1','entity2','entity3'], async (entityId) => {
const res = await fetch(`https://api/entities/${entityId}`);
const entity = await res.json();
return entity.isPublic;
});
// operations will run in parallel
const [result1, result2, result3] = await promizr.parallel([
async () => operation1Async(),
async () => operation2Async(),
async () => operation3Async(),
];You can find the package documentation here.
This project is under MIT License. See the LICENSE file for the full license text.