iframe是否与所有者在同一个线程上运行?

Ami*_*mir 11 javascript iframe multithreading

我有一个CPU密集型工作要做,我不想降低用户体验.因为网络工作者(http://ejohn.org/blog/web-workers/)是一个新功能,并不是所有浏览器都支持,我想打开一个带有HTML + JS的iframe,它将完成所有肮脏的工作,使用一些跨域通信来传递结果.不幸的是,我注意到iframe的所有者遭受了iframe窗口的CPU工作.

这种行为是否符合设计?有办法解决这个问题吗?

Mar*_*off 8

一种模拟多线程的方法是让Javascript函数做一些工作,然后setTimeout使用相同的函数调用; 然后该功能将做一些工作并setTimeout再次调用,这个循环将永远持续或直到他们关闭框架或你发出信号停止工作. MDN有一个很好的例子来说明如何设置它.

在超时之间,Javascript不应占用任何处理器时间.你可能需要玩一下才能看出你的超时时间应该是多长时间 - 1ms可能太短了,但1s肯定太长了.另一个因素是运行作业的计算机的处理器速度,因此您可能需要通过Javascript在客户端进行一些伪基准测试,然后才能确定每次延迟的延迟时间.

  • w3schools!= W3C (6认同)