node-ejs-renderer/node_modules/thingies/es2020/promiseMap.js

36 lines
1.0 KiB
JavaScript
Raw Normal View History

2024-06-09 13:55:01 -04:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.promiseMap = void 0;
const noop = () => { };
/**
* Creates promises of a list of values. Resolves all promises and
* returns an array of resolved values.
*/
const promiseMap = (values, onValue, onError = noop) => new Promise((resolve) => {
const length = values.length;
if (!length) {
return resolve([]);
}
const results = [];
let resolvedCount = 0;
for (let i = 0; i < length; i++) {
const value = values[i];
const promise = onValue(value);
promise.then((result) => {
results[i] = result;
resolvedCount++;
if (resolvedCount === length) {
resolve(results);
}
}, (error) => {
results[i] = null;
onError(error, value, i);
resolvedCount++;
if (resolvedCount === length) {
resolve(results);
}
});
}
});
exports.promiseMap = promiseMap;