1

我正在对一些音频文件进行一些相当繁重的处理器处理。在我进入这个名为 startProcessing 的函数之前,我想显示一个覆盖整个页面的 div 并说正在计算...问题是 div 仅在函数终止后显示。当我单击激活 tis 代码的按钮时,按钮会冻结,并且只有当进程功能终止时,它才会解冻并显示加载程序。任何人都看到过类似的行为并能够解决它?

document.getElementById('loader').innerHTML = "<p>Calculating...</p><p>Please Wait</p><img src='../img/loader.gif' />";
document.getElementById('loader').style.visibility = "visible";
document.getElementById('notification').style.visibility = "visible";

var speed = document.getElementById("playbackSpeed").value/100;


    console.log("Changing speed");
    if (speed > 1.5){
        startProcessing(1.5);   
        backend.playbackSpeed = 1.5;
    } else if (speed < 0.75){
        startProcessing(0.75);
        backend.playbackSpeed = 0.75;
    } else {
        startProcessing(speed);
        backend.playbackSpeed = speed;
    }   
4

3 回答 3

3

您可以将繁重的处理投入到Web Worker中。这将释放你的用户界面。

注意:它对 IE 不友好......只有 IE10(我认为)

于 2012-12-06T19:56:00.850 回答
1

尝试运行繁重的计算,但有一些延迟:

setTimeout(function(){
    var speed = document.getElementById("playbackSpeed").value/100;


    console.log("Changing speed");
    speed = Math.min(Math.max(speed, 0.75), 1.5);
    startProcessing(speed);
    backend.playbackSpeed = speed;
}, 13); 
于 2012-12-06T19:54:15.290 回答
0

一种方法是使用setTimeoutsetInterval为您的 div 显示进度条。另一种解决方法是做一些(伪)多线程

于 2012-12-06T19:57:41.350 回答