javascript – 长时间运行脚本的屏幕截屏

我有一个简单的html页面,其中包含一个超过2000行的大表.我为该表中的搜索和排序编写了jQuery代码.搜索和排序需要相当长的时间(这是可以理解的).

我想要的是在脚本搜索或排序表时使用屏幕拦截器.在许多网站上的AJAX调用上可以观察到这种行为,这可以通过实现jQuery的onAjaxBegin和onAjaxComplete事件来实现.

是否有任何此类方法可用于为长时间运行的脚本设置屏幕拦截器.如果没有,有什么替代方案?

最佳答案 我建议将其分解并使用setTimeout进行迭代.

例如,而不是:

function example1() {
    for (var i = 0; i < 1000; i++) {
        // SOME CODE
    }
}

你可以写:

function example2() {
    var i = 0;
    helper();
    function helper() {
        // SOME CODE
        if (++i < 1000) {
            setTimeout(helper, 0);
        }
    }
}

您不必在不同的回调中进行每次迭代.您可以在1个函数调用中将1000次迭代转换为100个函数调用中的每个函数调用10次迭代,或者在您的情况下最适合的事情.我们的想法是不要长时间阻止用户界面,用户会注意到.

如果可以的话,另一个想法就是使用Web Workers,但这对旧版浏览器不起作用(如果您正在编写浏览器扩展或者您知道用户将使用什么,这对您来说可能是也可能不是问题,等等. ).

如果按照你在问题中解释的方式进行操作,那么在计算过程中你会使浏览器完全没有响应,你很可能会触发“慢速脚本 – 你想杀死它吗?”有点警告.

点赞