1

プロジェクトの一環として、javascript でトピック モデリングのLDAアルゴリズムを実装しています。ボタンをクリックすると、LDA を実行する関数が呼び出されます。ただし、これは非常に負荷の高いタスクであるため、関数が呼び出されたときにブラウザーが約 15 秒間ハングしていました (処理中にアニメーション GIF の読み込みが機能していませんでした)。

そこで、この機能をweb workerとして実装しました。これにより、ハングアップの問題が解決されますが、ロード アニメーションが数秒以内に消え、その後 12 ~ 14 秒後に結果が表示されます。

処理中にローダーをアニメーション化する方法はありますか? ローディング アニメーションが消える前に、Web ワーカーが計算を完了するのを待ちます。

スクリプトは非同期で呼び出され、ローダーは jQuery の ajax イベントに次のようにアタッチされます。

$('#spinner').bind("ajaxSend", function() {
   $(this).show();
}).bind("ajaxComplete", function() {
   $(this).hide();
});
4

1 に答える 1

3

(重い) ワーカー ロジックを開始する前にスピナーをアクティブにし、ワーカーが終了したらスピナーを無効にします。

var worker = new Worker('workerscript.js');
worker.onmessage = function(event) {
    // Do something with event.data, then hide the spinner.
    $('#spinner').hide();
};
$('#spinner').show();
worker.postMessage({args: ' foo bar '});

workerscript.js次のようになります。

self.onmessage = function(event) {
    var results;
    // do something
    ...
    // Done:
    postMessage(results);
};
于 2012-07-01T12:51:51.147 に答える