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>
复制代码

 

   

 

posted @   方帅  阅读(118)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示