setTimeout(function(){
/* Some long block of code... */
setTimeout(arguments.callee, 10);
}, 10);
setInterval(function(){
/* Some long block of code... */
/* Some long block of code... */
setTimeout(arguments.callee, 10);
}, 10);
setInterval(function(){
/* Some long block of code... */
}, 10);
JavaScript是单线程的。
setInterval是指:每隔一段时间执行,执行多次。当setInterval回调函数第二次被触发时,可能把所有的setInterval回调函数都排在执行队列的后面,代码块执行完之后,结果便会是一大串的setInterval回调函数等待执行,并且这些函数之间没有间隔,直到全部完成,这意味着两次setInterval回调函数之间的时间间隔会被牺牲掉(缩减)。
当回调函数第二次被触发时(此时setTimeout函数仍在执行时),第一次触发将被抛弃掉。