相关疑难解决方法(0)

在Web工作者之间共享变量?[全局变量?]

我有什么方法可以在两个网络工作者之间共享变量吗?(Web worker基本上是Javascript中的线程)

在像c#这样的语言中你有:

public static string message = "";
static void Main()
{
 message = "asdf";
 new Thread(mythread).Run();
}
public static void mythread()
{
 Console.WriteLine(message); //outputs "asdf"
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个糟糕的例子,但在我的Javascript应用程序中,我有一个线程进行大量计算,可以分布在多个线程中[因为我有一大块数据以数组的形式.数组的所有元素都是相互独立的.换句话说,我的工作线程不必关心锁定或类似的东西]

我发现在两个线程之间"共享"变量的唯一方法是创建一个Getter/setter [通过原型设计],然后使用postMessage/onmessage ...虽然这看起来效率很低[特别是对象,我有使用JSON进行AFAIK]

LocalStorage/Database已经从HTML5规范中删除,因为它可能导致死锁,所以这不是一个选择[遗憾] ......

我发现的另一种可能性是使用PHP实际上有一个getVariable.php和setVariable.php页面,它们使用localstorage来存储整数/字符串...再一次,Objects [包括arrays/null]必须转换为JSON ......然后是JSON.parse()'d.

据我所知,Javascript工作线程与主页面线程完全隔离[这就是Javascript工作线程无法访问DOM元素的原因

虽然postMessage有效但速度很慢.

谢谢!

html javascript global-variables web-worker local-storage

9
推荐指数
3
解决办法
1万
查看次数