rong_worker

JavaScript worker 线程

本页 API 参考由仓库内的英文文档生成,暂仅提供英文版。

Worker — Web Workers

Run JavaScript in a dedicated OS thread with its own JS runtime and event loop. Communication via JSON-serialized messages.

Basic Usage

// main.js
const worker = new Worker("./task.js");

worker.onmessage = (event) => {
  console.log("Result:", event.data);
};

worker.postMessage({ numbers: [1, 2, 3, 4, 5] });
// task.js
onmessage = (event) => {
  const sum = event.data.numbers.reduce((a, b) => a + b, 0);
  postMessage({ sum });
};

Main Thread API

Constructor

const worker = new Worker("./script.js");

Path can be absolute or relative to cwd.

Send Message

worker.postMessage(data);

data is serialized via JSON.stringify and deserialized via JSON.parse on the worker side.

Receive Message

worker.onmessage = (event) => {
  console.log(event.data);
};

Error Handling

worker.onerror = (event) => {
  console.error("Worker error:", event.message);
};

onerror receives an object with type and message fields.

Terminate

worker.terminate();

Worker-Side API

Global APIs available inside worker scripts:

APIDescription
onmessage = (event) => {}Receive messages from main thread
postMessage(data)Send message to main thread
close()Close the worker
selfWorker global scope reference

Notes

  • Each worker runs in a dedicated OS thread with its own JS engine instance
  • Messages are JSON-serialized — no shared memory
  • Workers have console by default; other modules can be configured via rong_worker::set_initializer
  • After terminate(), the worker stops processing new messages