setInterval和setTimeout执行事件测试
如果使用setInterval函数每100ms执行一段代码,中间有一次任务执行时间为1000ms,那么这次任务后会连续执行10次代码吗(即setInterval的任务会堆积吗)
为了测试这个问题,写了下面的代码,测试结果见控制台输出。
<script> startInterval(); //测试setInterval函数做的执行机制 function startInterval() { var time = 0; var now=Date.now(); console.log("------startInterval,", now); var tId = setInterval(() => { let i = 0; while (i < 20000000) { if (time < 10) { let reg = "gfdshtretyhgfdjhgf".replace(/>?=q/g, "");//加入正则为了消耗性能 } i++; } console.log("setInterval,", Date.now()- now); now=Date.now(); time++; if (time == 15) { clearInterval(tId) startTimeOut(); } }, 1000) } //测试startTimeOut函数做的执行机制 function startTimeOut() { var time = 0; var now=Date.now(); console.log("------startTimeOut,", now); for(time=0;time<15;time++){ var tId = setTimeout(() => { let i = 0; while (i < 200000000) { if (time < 10) { let reg = "gfdshtretyhgfdjhgf".replace(/>?=q/g, "");//加入正则为了消耗性能 } i++; } console.log("setTimeOut,",Date.now()- now); now=Date.now(); }, 1000) } } </script>



浙公网安备 33010602011771号