Multipromise resulter
Date tested:
5 years ago
User agent:
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0
Test name
Executions per second
Function based
4942.2 Ops/sec
Array based
5790.7 Ops/sec
Benchmark definition (click to collapse):
Script Preparation code:
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(); }
Tests:
Function based
const createResultPromiseFunc = () => { let res = Promise.resolve(); return { get() { return res; }, add(nextPromise) { res = res.then(() => nextPromise); return this; } }; }; runTest(createResultPromiseFunc);
Array based
const createResultPromiseArray = () => { const res = []; return { get() { return Promise.all(res); }, add(nextPromise) { res.push(nextPromise); return this; } }; }; runTest(createResultPromiseArray);
Open this result on MeasureThat.net