function subProcess() {
var f = [];
for (var i = 0; i < 10000; i++) {
for (var j = 0; j < 100000; j++) {}
f.push(1);
}
}
var statusElement = document.getElementById('status');
statusElement.innerHTML = "1";
subProcess();
statusElement.innerHTML += "<br/>2";
subProcess();
statusElement.innerHTML += "<br/>3";
subProcess();
statusElement.innerHTML += "<br/>4";
subProcess();
statusElement.innerHTML += "<br/>5";
subProcess();
statusElement.innerHTML += "<br/>6";
subProcess();
statusElement.innerHTML += "<br/>7";
subProcess();
statusElement.innerHTML += "<br/>8";
statusElement.innerHTML = "finished";
<div id='status'></div>
我有一个简单的愿望,我可以解决,但我的问题是正确的方式。
我有需要时间的过程。 该过程分为几个子过程。当每个子过程结束时,我想在某个段落元素上写下它。
问题在于段落没有更新,直到大进程结束,并且因为浏览器被占用,并且它将被释放,它将更新DOM。
我知道我可以简单地把每个子进程超时10毫秒或类似的东西,它正在做这项工作。
问题是唯一的方法? 这是一个函数,告诉浏览器做你的工作,并告诉你什么时候完成?
例如,
// process start
// writing the status to paragraph
// wait till browser update the dom elements
// sub process 1 start
// writing the status to paragraph
// wait till browser update the dom elements
// sub process 2 start
// writing the status to paragraph
// wait till browser update the dom elements
// sub process 3 start
// writing the status to paragraph
// wait till browser update the dom elements
// process 1 ends
我的问题是,处理时间对我很重要。我看到当我把0毫秒的超时它不工作的原因。因此每个子过程的10毫秒可以总结为半秒。
你能分享你试过的代码吗? –
[Javascript is ** not ** a multithreaded language](http://stackoverflow.com/questions/16749664/single-thread-concept-of-javascript-running-in-browser) – Liam
我意识到这一点。这不是我的注意。我的问题是如何等待浏览器使用更新UI,然后运行下一个过程。 –