簡體   English   中英

Javascript - 等待網絡工作者完成?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM