【发布时间】:2018-04-17 17:55:45
【问题描述】:
主线程 JS 和 webworker 之间可以传递和不能传递什么?
我在 webworker 中有一个 JS 类,我想将它传递给他们的主线程。做这个的最好方式是什么?有没有办法将 JSON 对象映射到一个类上,还是我需要为此创建一个特殊的构造函数?
class HelloWorld{
constructor(message){
this.msg = message
}
getMessage(){
debugger
return this.msg;
}
}
var a = new HelloWorld("hello WorlD")
postMessage(a)
主线程将其读取为 `{msg:"hello WorlD"} 剥离所有成员数据和 typeof 数据。
【问题讨论】:
-
您不能将函数或类似的动态对象转发给网络工作者。你只能在主线程中为 webworker 提供一个接口来与这些东西进行交互
-
你不能将函数传递给网络工作者,包括
class构造函数。 -
为了 100% 清楚,您的意思是您有一个由
class语法定义的构造函数(与关联的prototype),并且您想将该构造函数传递给 worker,对吗?或者您是在谈论传递通过调用它创建的类的 instance 吗? -
@apsillers - 如果是这样的话,我首先质疑 Worker 的使用。为什么要生成一个进程只是为了加载您传递回主程序的代码?没有意义。 OP - 究竟是什么用例?
标签: javascript web-worker