0

我有一个 JavaScript 函数 buildTable,它构建了一个很长的 HTML 表。

 function buildTable() {

                for (var i = 0; i < rowCount; i++) {

     .. code to create table

}

}

buildToolsetTable 花费了太多时间,几秒钟后 IE 7 显示提示,如果我想继续运行脚本。我读到我可以使用 window.setTimeout 进行另一个调用并刷新执行,但如果有人有实现,那么它将非常有帮助。

4

1 回答 1

2

你需要这样的东西,它将循环分解成一个单独的函数,每次迭代都调用它:

(function(n) {
    var i = 0;

    function doWork() {
        // do one row's worth of stuff here
        ...

        if (++i < n) {
            setTimeout(doWork, 0);
        } else {
            // do your tidy up here
            ...
        }
    }

    doWork(); // start the first iteration
})(rowCount);

调用setTimeout()将允许浏览器使用您自己的代码散布 UI 事件处理。

http://jsfiddle.net/alnitak/8wXTT/

为了增加乐趣,制作单次迭代并整理函数回调,这样您就可以使这段代码独立并只传递所需的参数。

于 2012-05-09T20:19:28.707 回答