当使用下面代码在火狐浏览器运行的时候alert("123")没有阻塞requestAnimationFrame的执行。_________________________<html>
<body>
<div id="time"></div>
<script>var timeDiv = document.getElementById('time');
requestAnimationFrame = window.mozRequestAnimationFrame;
//使用requestAnimationFramefunction donghua(){
timeDiv.innerHTML=Math.random();
requestAnimationFrame(donghua);
}
requestAnimationFrame(donghua);
alert("123");///未阻塞
</script>
</body>
</html>
_________________可是使用下面代码alert("123")却会阻塞requestAnimationFrame的运行_________________________
<html>
<body>
<div id="time"></div>
<script>var timeDiv = document.getElementById('time');
requestAnimationFrame =function(callback) {setTimeout(callback, 1000 / 60);};
//使用setTimeoutfunction donghua(){
timeDiv.innerHTML=Math.random();
requestAnimationFrame(donghua);
}
requestAnimationFrame(donghua);
alert("123");///阻塞!!
</script>
</body>
</html>
_________________由此我猜测requestAnimationFrame是使用的另一个线程来运行。回调函数、
但是让人疑惑的是、所有javascript的执行是使用的单线程、然后如果mozRequestAnimationFrame(function(){while(1);})这样写、浏览器一样的被阻塞、想明白为什么会这样,在次谢过大牛的解答了!HTML5的动画js动画JavaScript