3

我正在编写 Javascript,它正在为一个项目计数到一定数量。这个数字可能在 100,000 左右,完成处理大约需要 10-15 秒。我希望脚本在用户调用页面后立即运行,并且在脚本完成时进行重定向。是否可以在 DOM 运行时暂停 10 毫秒以更新 DOM 以提供诸如“仍在工作”之类的反馈?

我想避免使用 jQuery 和 web-workers 在这种情况下不是一个选项。我意识到这不是一个真实世界的应用程序!

编辑:添加了一些代码作为示例:

在头上

function myCounter (target) {
    var t = target;
    var count = 0;
    while (t != count){
        if (t == count) {
        window.location.replace("http://example.com"); // redirect
        }
    count++;
    }
}

在身体里

<script>myCounter(100000);</script>
4

1 回答 1

3

在大多数浏览器中,JavaScript 和 UI 在同一个线程中运行。setTimeout您可以使用(或)将线程返回给浏览器setInterval

var myNumber = 0;
updateNumber();

function updateNumber(){
    // do heavy work for great good, ideally divided into smaller chunks

    document.getElementById('updateDiv').innerHTML = 'still working, up to ' + myNumber;

    if(myNumber < limit) {
      setTimeout(updateNumber, 20);
    }
}

有关一般过程的更多详细信息,此答案值得一读:https ://stackoverflow.com/a/4575011/194940

于 2013-02-28T03:00:49.067 回答