{
const delay = (time) => (v) => new Promise(
(resolve) => setTimeout(
() => resolve(v),
time
)
);
const mapSeries = (fn, array) => {
return array.reduce(
(promise, item) => promise.then((results) => fn(item)
.then(result =>[...results, result])),
Promise.resolve([])
);
}
const delay1s = delay(1000);
const howLong = async (fn) => {
const start = new Date();
const result = await fn();
const elapsedTime = `${(new Date()) - start} ms`;
return {
result,
elapsedTime,
seed: Math.random(),
};
}
return howLong(() => mapSeries((value) => delay1s(value + 1), [1,2,3]))
}