From 9db3ec35804bbe566d1d20401fecedc657434256 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 28 Jun 2022 23:25:11 -0300 Subject: only update progress status every N ms --- src/util/cli.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/util/cli.js b/src/util/cli.js index cbcbf7c..99c0638 100644 --- a/src/util/cli.js +++ b/src/util/cli.js @@ -286,23 +286,29 @@ export function progressCallAll(msgOrMsgFn, array) { const msgFn = typeof msgOrMsgFn === 'function' ? msgOrMsgFn : () => msgOrMsgFn; + const updateInterval = 1000 / 60; + let done = 0, total = array.length; process.stdout.write(`\r${msgFn()} [0/${total}]`); const start = Date.now(); const vals = []; + let lastTime = 0; for (const fn of array) { const val = fn(); done++; - const pc = (Math.round((done / total) * 1000) / 10 + '%').padEnd('99.9%'.length, ' '); + if (done === total) { + const pc = '100%'.padEnd('99.9%'.length, ' '); const time = Date.now() - start; process.stdout.write( `\r\x1b[2m${msgFn()} [${pc}] \x1b[0;32mDone! \x1b[0;2m(${time} ms) \x1b[0m\n` ); - } else { + } else if (Date.now() - lastTime >= updateInterval) { + const pc = (Math.round((done / total) * 1000) / 10 + '%').padEnd('99.9%'.length, ' '); process.stdout.write(`\r${msgFn()} [${pc}] `); + lastTime = Date.now(); } vals.push(val); } -- cgit 1.3.0-6-gf8a5