[英]Javascript - Wait for web worker to finish?
我正在javascript中實現主題建模的LDA算法作為項目的一部分。 單擊按鈕后,將調用執行LDA的功能。 然而,由於這是一項非常繁重的任務,瀏覽器在調用函數時曾經掛起大約15秒(即使加載動畫gif在處理過程中也無法正常工作)。
所以我將該功能實現為web worker 。 這解決了懸掛問題,但現在加載動畫在幾秒鍾內消失,而結果顯示在此之后的12-14秒。
在處理過程中,有什么方法可以讓加載器生成動畫? 我的意思是等待網絡工作者在加載動畫消失之前完成計算。
該腳本是異步調用的,並且加載器附加到jQuery的ajax事件中
$('#spinner').bind("ajaxSend", function() {
$(this).show();
}).bind("ajaxComplete", function() {
$(this).hide();
});
在啟動(重)工作邏輯之前激活微調器,並在工作完成后禁用微調器:
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);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.