Appearance
数据序列化
本节目标:理解“数据序列化”的核心思路,并能把它用于实际开发或面试表达。
Web Worker 的 postMessage:
- Web Worker 通过 postMessage 与主线程通信,数据使用结构化克隆算法序列化。
- 支持的类型:
- 基本类型:number、string、boolean、null、undefined。
- 复杂类型:Object、Array、Map、Set、Date、RegExp、ArrayBuffer 等。
- 不支持的类型:
- 函数(包括方法)。
- DOM 节点(如 HTMLElement)。
- Symbol(除非显式处理)。
- 原型链(仅克隆自身属性)。
- 某些复杂对象(如 WeakMap、WeakSet、自定义类实例的部分属性)。
- 不支持:Proxy 对象(包括 reactive 或 ref 包装的对象),因为 Proxy 是动态代理,无法序列化。
错误含义:
- rawMap 或其嵌套对象包含无法序列化的内容,导致 postMessage 失败。
- 错误发生在 useOpenOrder.ts:187,对应 worker.postMessage 行。
