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