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
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;
|
|
}
|
|
};
|