javascript - 显示 javascript 执行进度

标签 javascript progress

我有一些 javascript 函数大约需要 1 到 3 秒。 (一些循环或 mooML 模板代码。)

在此期间,浏览器只是卡住。我尝试在开始操作之前显示“加载”动画(gif 图像)并在之后隐藏它。但它就是行不通。浏览器在渲染图像之前卡住,并在函数结束时立即隐藏它。

在执行 javascript 之前,我可以做些什么来告诉浏览器更新屏幕。,比如 Application.DoEvents 或后台工作线程。

关于如何显示 javascript 执行进度的任何意见/建议。我的主要目标浏览器是 IE6,但也应该适用于所有最新的浏览器

最佳答案

这是因为 IE6 中的所有内容都在同一个线程中执行 - 甚至动画 gif。

确保在开始之前显示 gif 的唯一方法是分离执行。

function longRunningProcess(){
    ....

    hideGif();
}

displayGif();
window.setTimeout(longRunningProcess, 0);

但这仍然会导致浏览器在 longRunningProcess 执行时卡住。
为了允许交互,您必须将代码分成更小的片段,也许像这样

var process = {
    steps: [
        function(){
            // step 1
            // display gif
        },
        function(){
            // step 2
        },
        function(){
            // step 3
        },
        function(){
            // step 4
            // hide gif
        }
    ],
    index: 0,
    nextStep: function(){
        this.steps[this.index++]();
        if (this.index != this.steps.length) {
            var me = this;
            window.setTimeout(function(){
                me.nextStep();
            }, 0);
        }
    }
};

process.nextStep();

关于javascript - 显示 javascript 执行进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2995805/

相关文章:

javascript - 获取 .js.erb 文件以在 textmate 中使用 javascript 编辑器

javascript - JavaScript中如何引用函数变量?

javascript - 添加时出现未知提供商 AngularJs ".run"

javascript - 调试 JavaScript 事件

javascript - 在 nodejs 中保持 SSH 连接

android - 如何在做事时实现进度条?

python - 带有 block 字符的终端中的文本进度条

swift - 带有进度条的点对点多点连接。

jquery - 可以使用 xhrFields 将 onprogress 功能添加到 jQuery.ajax() 中吗?

python - 如何打印每秒迭代次数?