2011-08-06 26 views
5

我想模拟使用iframe的多线程,但我遇到了一种情况,我不知道它是否实际上自己使用iframe进程(线程)。例如,如果我调用放置在iframe中的方法,它是使用由iframe创建的线程运行,还是使用主父窗口线程运行?使用iframe的多线程

如果是后者,那么是可以改变的范围,使得在iframe调用方法(使得程序使用一个不同的线程从该父窗口的)

编辑: 也许我应该已经更清楚了,但我不想使用WebWorkers,因为我没有访问DOM元素。

回答

4

如果你想运行一些后台任务,只需使用WebWorkers

通常你不需要多线程js代码。您应该使用事件循环。

+0

我同意事件循环,线程不增加处理能力,它们只是分割代码执行的手段。谷歌如何使用node.js来理解线程事件的威力。 –

+0

@KevinHakanson是的,我同意。但线程的主要用途是在后台运行大量计算。你不能将事件循环用于长时间运行的计算,你可以将它们放在一个新的进程中。在浏览器中,我们无法创建流程,因此我们使用web工作人员 – Raynos

+0

我的应用程序比计算复杂一点。我希望能够在父窗口中有多个线程处理SVG元素(缩放,平移,旋转等)。 – fogy

1

查看MDN文档中的Using web workers

工人接口派生实时操作系统级别的线程,可以并行,如果你不小心在你的代码 原因有趣的效果。但是,在网络工作者情况下,仔细控制的通信点 与其他线程的点意味着它实际上很难导致并发问题。无法访问非线程安全组件 或DOM,您必须通过序列化对象将特定数据传入和传出线程 。所以你必须非常努力地在代码中导致 问题。

John Resig在2009年写了Computing with JavaScript Web Workers n关于这个话题。但是,根据When can I use,在IE10之前没有IE支持,因此可能无法满足您的需求。