Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在访问Javascript中的对象时自动调用函数_Javascript_Multithreading_Web Worker - Fatal编程技术网

在访问Javascript中的对象时自动调用函数

在访问Javascript中的对象时自动调用函数,javascript,multithreading,web-worker,Javascript,Multithreading,Web Worker,我目前正在进行一个有很多库的大型Javascript项目。 我想有一些这个项目的一部分运行在单独的线程。inJavascript已经在做这样的事情:网络工作者 但是,web工作人员无法访问窗口对象,许多库都使用它。有没有办法自动将对窗口对象的调用(在web工作人员使用的库中)更改为发送给父线程的消息 然后,父线程将执行工作线程想要的操作,并将结果发送回工作线程 有可能吗?是的,你知道怎么做吗 谢谢大家! 恐怕没有真正的解决办法。您可能希望worker中有一个特殊的对象,在每次访问属性时,它都会将

我目前正在进行一个有很多库的大型Javascript项目。 我想有一些这个项目的一部分运行在单独的线程。inJavascript已经在做这样的事情:网络工作者

但是,web工作人员无法访问
窗口
对象,许多库都使用它。有没有办法自动将对窗口对象的调用(在web工作人员使用的库中)更改为发送给父线程的消息

然后,父线程将执行工作线程想要的操作,并将结果发送回工作线程

有可能吗?是的,你知道怎么做吗


谢谢大家!

恐怕没有真正的解决办法。您可能希望worker中有一个特殊的对象,在每次访问属性时,它都会将执行传递给调度线程,调度线程使用原始窗口对象处理请求

要做到这一点,您需要某种类型的catch-all访问器方法,该方法将在引用属性时运行。遗憾的是,Javascript中没有这样的东西,请参见下面的详细讨论(特别是T.J.Crowder的回答):

ECMAScript 6引入了一种称为(目前在FF和IE12(见图!)中支持)的新机制,从技术上讲,这将使您能够执行这些动态属性查找,但我觉得您的想法存在一个更根本的问题:您的目标是将本地调用转变为跨越单线程环境边界的消息


从工作线程和向工作线程传递的消息必须是异步的(因为javascript“线程”在生成之前不能被中断),这意味着即使您成功地设置了这样一个代理,它也会有效地将通常同步的操作(即属性访问)转变为异步操作,这是一个相当大的问题,特别是如果您正在寻找替代品以使用某些现有库。

请尝试阅读。我非常了解此功能,并且确信我将使用它来执行我想要执行的操作。不过,我想知道的是,每次我想访问
窗口
对象时,如何自动调用此函数。好的,谢谢您的回答和链接!好吧,我想我得想另一个办法了!