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

时间:2015-07-09 21:05:56

标签: javascript multithreading web-worker

我目前正在进行一个包含大量库的大型Javascript项目。 我想让这个项目的某些部分在单独的线程上运行。 Javascript已经有了这样的事情:网络工作者。

虽然,网络工作者无法访问didHighlightCellAtIndexPath对象,但很多图书馆都使用它。有没有办法自动将对窗口对象的调用(在用于Web worker的库中)更改为发送到父线程的消息?

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

我担心没有真正解决方案。你可能想要的是你的工作者中的一个特殊对象,它在每次访问属性时都将执行传递给调度线程 - 它使用原始窗口对象处理请求。

为此,您需要某种catch-all访问器方法,该方法在引用属性时运行。可悲的是,Javascript中没有这样的东西,请参阅详细的讨论(尤其是T.J.Crowder的回答):Is it possible to implement dynamic getters/setters in JavaScript?

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

从工作线程传递到工作线程的消息必须是异步的(作为javascript"线程"在它产生之前不能被中断),这意味着即使你设法设置像这样的代理,它有效地将通常同步的操作(即属性访问)转换为异步操作,这是一个非常大的问题,特别是如果您正在寻找替代品以便使用一些现有的图书馆。