Test name | Executions per second |
---|---|
Function based | 8257.2 Ops/sec |
Array based | 6471.9 Ops/sec |
function delay(ms, val = true) {
let timeoutId;
return new Promise(resolve => {
timeoutId = setTimeout(() => resolve(val), ms);
});
}
function runTest(resultFunc) {
const res = resultFunc();
for(let i=0; i<20; i++) {
res.add(delay(i));
}
return res.get();
}
const createResultPromiseFunc = () => {
let res = Promise.resolve();
return {
get() { return res; },
add(nextPromise) {
res = res.then(() => nextPromise);
return this;
}
};
};
runTest(createResultPromiseFunc);
const createResultPromiseArray = () => {
const res = [];
return {
get() { return Promise.all(res); },
add(nextPromise) {
res.push(nextPromise);
return this;
}
};
};
runTest(createResultPromiseArray);