From 46b582bce4966897edbdad9c4cde780551bf6f02 Mon Sep 17 00:00:00 2001 From: Thorsten Kober Date: Sat, 16 Nov 2024 08:35:31 -0500 Subject: [PATCH] add message-channel --- resources/test-invoker.mjs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/resources/test-invoker.mjs b/resources/test-invoker.mjs index 672c69ae0..8af28fd4c 100644 --- a/resources/test-invoker.mjs +++ b/resources/test-invoker.mjs @@ -37,13 +37,34 @@ export class RAFTestInvoker extends TestInvoker { _scheduleCallbacks(resolve) { requestAnimationFrame(() => this._syncCallback()); requestAnimationFrame(() => { - setTimeout(() => { + let gotTimer = false; + let gotMessage = false; + + const tryTriggerAsyncCallback = () => { + if (!gotTimer || !gotMessage) + return; + this._asyncCallback(); setTimeout(async () => { await this._reportCallback(); resolve(); }, 0); - }, 0); + }; + + setTimeout(() => { + gotTimer = true; + tryTriggerAsyncCallback(); + }); + + const mc = new MessageChannel(); + mc.port1.onmessage = () => { + mc.port1.close(); + mc.port2.close(); + + gotMessage = true; + tryTriggerAsyncCallback(); + }; + mc.port2.postMessage("speedometer"); }); } }