我假設你正在使用一個循環來生成樹,因此創建一個函數,該函數根據傳遞的變量運行樹的增長的單個步驟,該變量是循環中的計數器。 ei:
<script>
// what you probably have now
// for(var i=0;i<100;i++){
// dosomething
// };
function step(i){
dosomething
if(i<100){
window.requestAnimationFrame(function(){step(i+1)});
};
};
step(0);
</script>
您必須製作這樣的跨瀏覽器。
window.requestAnimationFrame=(function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback,1000/45);
};
})();
但是這應該在每次程序運行後重新呈現DOM。
將由setTimeout(function(){...},5)分隔的較小塊中的計算分散可能會有幫助。 –
我已經嘗試過這種可能性。在我的循環中,對於每個構建的節點,我放置一個setTimeout。但它不會改變任何事情。 – Johann
嘗試隱藏,然後顯示要觸發刷新時的元素,如:$('#parentOfElementToBeRedrawn')。hide()。show(0); – talkol