Javascript多DOM或多线程或隔离上传执行的替代方案

Javascript多DOM或多线程或隔离上传执行的替代方案,javascript,multithreading,dom,Javascript,Multithreading,Dom,在开始使用web workers之后,我意识到我需要的库使用隐藏的iframe和其他DOM操作,即使在禁用用户界面的情况下也是如此。Web workers似乎是JavaScript的唯一多线程解决方案,但他们不能直接访问DOM,这是可以理解的 我还没有找到任何关于创建一个单独的DOM对象的参考,该对象的行为类似于一个单独的选项卡,可以获得它自己的线程。隐藏的iFrame通常在浏览器中以这种方式处理吗?如果没有,除了Worker之外,是否还有其他方法可以将我的UI与其他执行隔离或区分优先级? 我的

在开始使用web workers之后,我意识到我需要的库使用隐藏的iframe和其他DOM操作,即使在禁用用户界面的情况下也是如此。Web workers似乎是JavaScript的唯一多线程解决方案,但他们不能直接访问DOM,这是可以理解的

我还没有找到任何关于创建一个单独的DOM对象的参考,该对象的行为类似于一个单独的选项卡,可以获得它自己的线程。隐藏的iFrame通常在浏览器中以这种方式处理吗?如果没有,除了Worker之外,是否还有其他方法可以将我的UI与其他执行隔离或区分优先级?

我的问题可以通过使用单独的线程来解决,或者至少可以最小化,尽管这样可以避免潜在的问题,即性能问题或者存在于第三方库中的问题

症状: UI响应性降到零,线程与该内核上100%的CPU保持一致。这可能会持续0到30秒,有时甚至会提示浏览器询问是否停止脚本。如果禁用上载,则不会发生此问题。它不是每次都会发生,但如果UI或后台上传同时执行,则似乎有50%以上的时间会发生


我需要一个解决方案,以便用户能够完全响应并在启动上载后继续浏览站点(单页应用程序)。

对不起,我不确定您的问题是什么,但您注意到的任何CPU峰值都是机器、浏览器、浏览器插件、配置选项、,等等。如果这是您希望解决的问题,您还没有提供开始解决该问题所需的任何信息。iFrame仅用于支持IE9及更旧版本,因为这实际上是允许在这些浏览器中同时上载多个文件的唯一方法。如果您没有使用您所说的任何UI模块,并且使用的是现代浏览器,则唯一的DOM元素是文件输入。不清楚为什么您认为web workers会在一台已经使用100%cpu的机器上提供任何形式的性能提升,也不清楚这对上传文件有什么好处,因为这些都不受ui线程的限制。同样,您需要详细说明您的确切问题,并提供解决该问题所需的具体信息。谢谢Ray,优秀产品(FU)。它是单核90-100%CPU峰值,例如浏览器选项卡进程,很可能是SPA库或导致故障的组合。我的想法是将它隔离在一个web worker中,这样浏览器就可以将它委托给一个单独的线程,并提高UI的响应能力。我希望浏览器在使用Web workers时如何委派新线程方面有所不同。如果我能成功地将文件列表传递给Web工作者,我将尝试修改您的库以删除对DOM的引用。感谢您让我知道,我不关心IE9。我可以向您保证,发送http请求并不是cpu消耗,将其委托给web工作者不会带来任何性能提升。事实上,将BLOB从ui线程传递给web工作人员可能会进一步降低应用程序的速度。如果您发现cpu使用率异常,我建议您首先使用chrome dev工具对应用程序进行评测,以准确找出问题所在。