Nat*_*der 4 javascript web-worker
我有一个渲染工作者,我想通过回调.我知道worker.postMessage方法现在支持Javascript对象,但是当我尝试传递带有对象的函数时,我收到一个错误,告诉我它"无法克隆"该对象.
我还在对象上尝试了JSON.stringify(),并了解到函数没有得到字符串化,因为JSON不支持函数作用域.
有没有办法将回调传递给Web Worker?如果没有,你会如何建议解决这个限制?
我的问题是我在发送动画的同时向工作人员发送消息以启动渲染.所以我需要等到BOTH完成才能执行"回调"
有没有办法将回调传递给Web Worker?
来自MDN:
Worker接口的postMessage()方法将消息发送到worker的内部作用域.这接受一个参数,即发送给worker的数据.数据可以是由结构化克隆算法处理的任何值或JavaScript对象,其包括循环引用.
而且还:
对结构化克隆不起作用的事情
- 结构化克隆算法无法复制错误和函数对象; 尝试这样做会抛出DATA_CLONE_ERR异常.
所以不.你不能传递函数.
我的问题是我在发送动画的同时向工作人员发送消息以启动渲染.所以我需要等到BOTH完成才能执行"回调"
生成唯一ID(例如,与随机数连接的时间戳).存放它.关联您喜欢的任何数据(包括您想要用作回调的函数).将它传递给动画处理程序和Web worker的末尾.
在工作完成后发回该ID.在其中侦听具有该ID的事件,并在您的数据结构中查找.
| 归档时间: |
|
| 查看次数: |
1443 次 |
| 最近记录: |