我假设你正在使用一个循环来生成树,因此创建一个函数,该函数根据传递的变量运行树的增长的单个步骤,该变量是循环中的计数器。 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