我正在javascript中实现主题建模的LDA算法作为项目的一部分。单击按钮后,将调用执行LDA的功能。然而,由于这是一项非常繁重的任务,浏览器在调用函数时曾经挂起大约15秒(即使加载动画gif在处理过程中也无法正常工作)。
所以我将该函数实现为web worker。这解决了悬挂问题,但现在加载动画在几秒钟内消失,而结果显示在此后12-14秒。
在处理过程中,有什么方法可以让加载器动画化吗?我的意思是等待网络工作者在加载动画消失之前完成计算。
脚本是异步调用的,加载器附加到jQuery的ajax事件
$('#spinner').bind("ajaxSend", function() {
$(this).show();
}).bind("ajaxComplete", function() {
$(this).hide();
});
答案 0 :(得分: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);
};