我有一个全局变量对象,我想将它传递给我的工作者。
显然我最好的选择是将该变量对象转换为字符串,然后让我的工作人员将其转换回来,用它做东西,然后将其转换回字符串并将其传递回我的主线程。
有什么方法可以强制对象给工人吗?没有所有这些转换,或者像下载一些奇怪的东西那样奇怪的技巧。
我知道你可以使用setTimeout()来创建线程,但是这些线程由同一个核心使用,而一个worker使用不同的核心。
答案 0 :(得分:0)
1。看一下插件jsonfn。
使用此插件,您可以将Function
,Date
和Regex
的对象转换为字符串,并将此字符串转换回类似于常规JSON的对象
var str = JSONfn.stringify(obj);
var obj = JSONfn.parse(str);
查看实时示例和文档http://www.eslinstructor.net/jsonfn/
2。看一下插件vkThread。它允许您在没有任何Web工作者技能的情况下在线程中执行一段代码,只需将函数传递给插件即可。
function foo(n, m) {
return n + m;
}
var param = {
fn: foo, // <-- function to run in a thread;
args: [2, 3] // <-- function's arguments;
};
vkthread.exec(param).then(
function(data){
console.log(data); // <-- prints 5;
}
);
在http://www.eslinstructor.net/vkthread/
查看实时示例和文档 3. setTimeout()
不会创建线程。