1

作为项目的一部分,我正在 javascript 中实现主题建模的LDA算法。单击按钮后,将调用执行 LDA 的函数。然而,由于这是一项非常繁重的任务,因此在调用该函数时浏览器会挂起大约 15 秒(即使在处理过程中加载动画 gif 也不起作用)。

所以我将该功能实现为web worker。这解决了挂起问题,但现在加载动画会在几秒钟内消失,而结果会在 12-14 秒后显示。

有什么方法可以让加载器在处理过程中进行动画处理?我的意思是在加载动画消失之前等待网络工作者完成计算。

脚本被异步调用,加载器附加到 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 回答