访问 Javascript 中的对象时自动调用函数
Automatically call a function when accessing an object in Javascript
我目前正在进行一个包含很多库的大型 Javascript 项目。
我想在单独的线程上将此项目的某些部分 运行 。 Javascript 中已经有一些东西在这样做:网络工作者。
尽管网络工作者无法访问 window
对象,但许多库都在使用它。有没有办法自动将对 window 对象的调用(在用于网络工作者的库中)更改为发送到父线程的消息?
然后,父线程会执行worker 想要的操作并将结果返回给worker。
可以吗?是的,你知道怎么做吗?
谢谢!
恐怕没有真正的解决办法。您可能想要的是工作程序中的一个特殊对象,在每次 属性 访问时,它都会将执行传递给调度线程 - 它使用原始 window 对象处理请求。
为此,您需要某种包罗万象的访问器方法,只要引用 属性,它就会 运行。可悲的是,Javascript中没有这样的东西,请参阅此详细讨论(尤其是T.J。Crowder的回答):Is it possible to implement dynamic getters/setters in JavaScript?
ECMAScript 6 引入了一种称为 Proxy 的新机制(目前在 FF 和 IE12 中受支持(看图!)),这将使您能够执行这些动态 属性 查找,技术上 - 但我觉得你的想法有一个更根本的问题:你的目标是将本地调用转换为跨越单线程环境边界的消息。
从工作线程传递到工作线程的消息必须是异步的(因为 javascript "thread" 在它产生之前不能被中断),这意味着即使你确实设法设置了一个像这样的代理,它会有效地将通常同步的操作(即 属性 访问)转变为异步操作,这是一个相当大的问题,特别是如果你正在寻找一个直接替换为了使用一些现有的库。
我目前正在进行一个包含很多库的大型 Javascript 项目。 我想在单独的线程上将此项目的某些部分 运行 。 Javascript 中已经有一些东西在这样做:网络工作者。
尽管网络工作者无法访问 window
对象,但许多库都在使用它。有没有办法自动将对 window 对象的调用(在用于网络工作者的库中)更改为发送到父线程的消息?
然后,父线程会执行worker 想要的操作并将结果返回给worker。
可以吗?是的,你知道怎么做吗?
谢谢!
恐怕没有真正的解决办法。您可能想要的是工作程序中的一个特殊对象,在每次 属性 访问时,它都会将执行传递给调度线程 - 它使用原始 window 对象处理请求。
为此,您需要某种包罗万象的访问器方法,只要引用 属性,它就会 运行。可悲的是,Javascript中没有这样的东西,请参阅此详细讨论(尤其是T.J。Crowder的回答):Is it possible to implement dynamic getters/setters in JavaScript?
ECMAScript 6 引入了一种称为 Proxy 的新机制(目前在 FF 和 IE12 中受支持(看图!)),这将使您能够执行这些动态 属性 查找,技术上 - 但我觉得你的想法有一个更根本的问题:你的目标是将本地调用转换为跨越单线程环境边界的消息。
从工作线程传递到工作线程的消息必须是异步的(因为 javascript "thread" 在它产生之前不能被中断),这意味着即使你确实设法设置了一个像这样的代理,它会有效地将通常同步的操作(即 属性 访问)转变为异步操作,这是一个相当大的问题,特别是如果你正在寻找一个直接替换为了使用一些现有的库。