スキミング?太字を読んでください。
なんてこった!私はいくつかの深刻なXMLクランチを行う必要があるWebアプリケーションを構築しています。
私は現在、jQueryを使用して大量のXMLドキュメントを解析および操作する関数を持っています。これにより、ブラウザのUIが最大60秒間ロックされますが、これは明らかに非常に不十分です。
ブラウザのUIを軽減するために、この操作をWeb Workerスレッドで実行したいので、私はWebWorkersを調べてきました。
Web Workerを使用してjQueryライブラリをインポートし、WebWorkerスレッド内からXMLを解析および操作できることを望んでいました。self.importScripts()
できない: jQueryライブラリがウィンドウやフレンドへの参照を作成するため、Webワーカーはエラーをスローwindow is not defined
します。これらはスレッドセーフではないため、Webワーカーのグローバル名前空間に存在しません。
私はたくさんのグーグルをしましたが、この主題に関する最近の情報を見つけるのに苦労しました。いくつかのハッキーな回避策とjQueryプラグインを見つけましたが、それらはすべて数年前のものであり、この比較的新しいテクノロジーの新しいソリューションがないことを望んでいました。
(半)公式の「WebワーカーjQuery」は存在しますか?
Webワーカー内で実行する必要があるjQueryの代替であるXMLforScriptを見つけましたが、コードを書き直したくないので、特にjQueryソリューションを探しています。
importScripts()
次のように呼び出す前に、Webワーカー内のjQueryのエラーを緩和するために、一連の偽の要素を作成しようとしました。
window={
document:{
createElement:function(){
return {
setAttribute:function(){} } } } };
/* ... much more fake DOM */
importScripts('jquery.js');
しかし、jQueryを満たすために巨大な人工DOMの作成に深く取り組む必要があることを認識しており、jQueryはXML解析のためにこれらのオブジェクトの一部に依存している可能性があるため、おそらく失敗と時間の浪費への道であると考えています(I jQueryがどのように機能するかを知るのに十分な知識がありません)。
誰か素敵な解決策はありますか?
そうでない場合は、脂肪の多い静的負荷インジケーターを作成して、シェナニガンには時間がかかること、およびWebアプリがクラッシュしたり、動作を停止したりしていないことを信頼して期待する必要があることをユーザーに警告します:D
熟考していただきありがとうございます。
//追跡。