You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

24 lines
448 B
JavaScript

"use strict";
// TODO: Add concurrency control?
const map = require("../map");
module.exports = async function mapAsync(iterable, mapper, options = {}) {
let concurrent = options.concurrent ?? true;
if (concurrent) {
return Promise.all(map(iterable, mapper));
} else {
let results = [];
let i = 0;
for (let value of iterable) {
let result = await mapper(value, i, iterable);
results.push(result);
}
return results;
}
};