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,然後運行下一個過程。 –