worker.markAsUncloneable(object)


  • object <any> 任意 JavaScript 值。

    ¥object <any> Any arbitrary JavaScript value.

将对象标记为不可克隆。如果在 port.postMessage() 调用中将 object 用作 message,则会引发错误。如果 object 是原始值,则这是一个无操作。

¥Mark an object as not cloneable. If object is used as message in a port.postMessage() call, an error is thrown. This is a no-op if object is a primitive value.

这对 ArrayBuffer 或任何类似 Buffer 的对象没有影响。

¥This has no effect on ArrayBuffer, or any Buffer like objects.

此操作无法撤消。

¥This operation cannot be undone.

const { markAsUncloneable } = require('node:worker_threads');

const anyObject = { foo: 'bar' };
markAsUncloneable(anyObject);
const { port1 } = new MessageChannel();
try {
  // This will throw an error, because anyObject is not cloneable.
  port1.postMessage(anyObject);
} catch (error) {
  // error.name === 'DataCloneError'
} 

浏览器中没有与此 API 等效的 API。

¥There is no equivalent to this API in browsers.