summaryrefslogtreecommitdiff
path: root/runtime/js/99_main.js
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/js/99_main.js')
-rw-r--r--runtime/js/99_main.js17
1 files changed, 6 insertions, 11 deletions
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js
index 62e7278ff..e97eed9ff 100644
--- a/runtime/js/99_main.js
+++ b/runtime/js/99_main.js
@@ -279,7 +279,10 @@ function postMessage(message, transferOrOptions = {}) {
let isClosing = false;
let globalDispatchEvent;
-let closeOnIdle;
+
+function hasMessageEventListener() {
+ return event.listenerCount(globalThis, "message") > 0;
+}
async function pollForMessages() {
if (!globalDispatchEvent) {
@@ -289,14 +292,7 @@ async function pollForMessages() {
);
}
while (!isClosing) {
- const op = op_worker_recv_message();
- // In a Node.js worker, unref() the op promise to prevent it from
- // keeping the event loop alive. This avoids the need to explicitly
- // call self.close() or worker.terminate().
- if (closeOnIdle) {
- core.unrefOpPromise(op);
- }
- const data = await op;
+ const data = await op_worker_recv_message();
if (data === null) break;
const v = messagePort.deserializeJsMessageData(data);
const message = v[0];
@@ -813,7 +809,6 @@ function bootstrapWorkerRuntime(
7: shouldDisableDeprecatedApiWarning,
8: shouldUseVerboseDeprecatedApiWarning,
9: _future,
- 10: closeOnIdle_,
} = runtimeOptions;
deprecatedApiWarningDisabled = shouldDisableDeprecatedApiWarning;
@@ -875,8 +870,8 @@ function bootstrapWorkerRuntime(
location.setLocationHref(location_);
- closeOnIdle = closeOnIdle_;
globalThis.pollForMessages = pollForMessages;
+ globalThis.hasMessageEventListener = hasMessageEventListener;
// TODO(bartlomieju): deprecate --unstable
if (unstableFlag) {