Skip to content

Commit 43b1f62

Browse files
committed
fix(Result): prevent frequent rerenders
1 parent 7b4906d commit 43b1f62

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

src/livecodes/core.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ const loadStyles = () =>
261261
].map((url) => loadStylesheet(url, undefined, '#app-styles')),
262262
);
263263

264+
let lastRun = { time: 0, result: '' };
264265
const createIframe = (container: HTMLElement, result = '', service = sandboxService) =>
265266
new Promise((resolve, reject) => {
266267
if (!container) {
@@ -337,12 +338,13 @@ const createIframe = (container: HTMLElement, result = '', service = sandboxServ
337338
eventsManager.addEventListener(iframe, 'load', function onload() {
338339
eventsManager.removeEventListener(iframe, 'load', onload);
339340

340-
if (!result || loaded) {
341+
if (!result || loaded || (lastRun.result === result && Date.now() - lastRun.time < 500)) {
341342
resolve('loaded');
342343
return; // prevent infinite loop
343344
}
344345

345346
iframe.contentWindow?.postMessage({ result }, service.getOrigin());
347+
lastRun = { time: Date.now(), result };
346348
loaded = true;
347349
resolve('loaded');
348350
});

0 commit comments

Comments
 (0)