在函数结束之前更改文档

时间:2011-02-27 23:54:41

标签: javascript

有没有办法在Javascript函数结束之前修改和更新文档?例如(不是我实际上做的,但足够接近):

function longloop(){
    for(var i=0;i<100;i++){
        x = someLengthyFunction();
        document.getElementById('aTable').innerHTML+='<tr><td>' + x + '</td></tr>';
    }
}

按下按钮调用该函数,我想在循环进行时更新表。我在那里只会在循环结束时显示更新的表格。

2 个答案:

答案 0 :(得分:3)

不,这是不可能的。

您需要做的是将部分循环拆分,并在更新文档后使用window.setTimeout继续下一部分。

示例:

function longloop(){
  function work(i) {
    x = someLengthyFunction();
    document.getElementById('aTable').innerHTML+='<tr><td>' + x + '</td></tr>';
    i++;
    if (i < 100) window.setTimeout(function(){ work(i); }, 0);
  }
  work(0);
}

答案 1 :(得分:1)

这绝对是web workers的工作。您可以将上述脚本作为工作程序运行,该工作程序会定期传递消息以更新您的内容。但由于只有非常现代的浏览器才能利用Web工作者,并且JavaScript不是一种线程语言,因此您可能必须非常有创造性地编写该循环才能完成此任务。