From 79931c398e3fc1a7f06c1dfb90605be36abfd4ab Mon Sep 17 00:00:00 2001 From: purocean Date: Fri, 10 Jan 2025 17:53:03 +0800 Subject: [PATCH] feat(code-runner): simplify buffer flushing by removing debounce logic and using setInterval --- src/renderer/plugins/code-runners.tsx | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/src/renderer/plugins/code-runners.tsx b/src/renderer/plugins/code-runners.tsx index a7fd85d1..487d182d 100644 --- a/src/renderer/plugins/code-runners.tsx +++ b/src/renderer/plugins/code-runners.tsx @@ -108,39 +108,21 @@ class JavascriptWorkerExecutor { const maxFlushInterval = 100 let buffer = '' - let lastFlushedAt = 0 - let timer = 0 - - const clearTimer = () => { - if (timer) { - clearTimeout(timer) - timer = 0 - } - } const flushBuffer = () => { - clearTimer() if (buffer) { Atomics.wait(isb, 0, 1) self.postMessage({ type: 'output', value: buffer }) - lastFlushedAt = performance.now() buffer = '' } } - const debounceFlushBuffer = () => { - clearTimer() - timer = setTimeout(flushBuffer, maxFlushInterval) - } - const flush = (type, val) => { if (type === 'output') { buffer += val - if (buffer.length > maxBuffer || performance.now() - lastFlushedAt > maxFlushInterval) { + if (buffer.length > maxBuffer) { flushBuffer() - } else { - debounceFlushBuffer() } } else { flushBuffer() @@ -149,6 +131,8 @@ class JavascriptWorkerExecutor { } } + setInterval(flushBuffer, 100) + const xConsole = getConsole(console, val => flush('output', val)) const AsyncFunction = eval('(async function(){}).constructor')