【发布时间】:2013-03-03 14:03:38
【问题描述】:
略读?只需阅读粗体字即可。
朋友们好!我正在构建一个 Web 应用程序,它需要进行一些严格的 XML 处理。
我目前有一个使用jQuery来解析和操作大量XML文档的功能。这锁定浏览器的UI长达60秒,显然,相当跛脚。
我一直在研究Web Workers,因为我想在 Web Worker 线程中运行此操作以减轻浏览器的 UI。
我希望我可以使用 Web Worker 的 self.importScripts() 导入 jQuery 库,从 Web Worker 线程中解析和操作 XML。
不能做: Web Worker 会抛出错误,例如 window is not defined, 因为 jQuery 库引用了非线程安全的窗口和好友,并且因此不存在于 Web Worker 的全局命名空间中。
我在谷歌上搜索了很多,但是 很难找到有关此主题的任何最新信息。我发现了一些 hacky 变通办法和 jQuery 插件,但它们都是几年前的旧的,我一直希望我错过了针对这种相对较新的技术的更新解决方案。
是否存在(半)官方“Web Worker jQuery”?
我找到了XMLforScript,它是 jQuery 的替代品,应该在 Web Worker 中运行——但 我正在专门寻找 jQuery 解决方案,因为我不想重写我的代码。
在调用importScripts() 之前,我很想尝试创建一系列假元素来缓解 Web Worker 中的 jQuery 错误,如下所示:
window={
document:{
createElement:function(){
return {
setAttribute:function(){} } } } };
/* ... much more fake DOM */
importScripts('jquery.js');
但是,我意识到我必须非常深入地创建一个巨大的人工 DOM 来满足 jQuery,并且认为这可能是一条失败和浪费时间的道路,因为 jQuery 可能依赖于其中的一些对象,因为它是 XML解析(我对 jQuery 的工作原理知之甚少)。
有人有什么可爱的解决方案吗?
如果没有,我将制作一个胖胖的静态加载指示器,以警告用户恶作剧需要时间,他们必须信任并希望网络应用没有崩溃或停止工作:D
感谢您的思考。
//追逐。
【问题讨论】:
-
您可能想查看 jquery deferred,不确定它到底是什么,但我认为它可能适用于您正在做的事情
标签: javascript jquery performance xml-parsing web-worker