setTimeOut和setInterval的执行机制

摘自高程:

js是一个单线程的解释器,因此一定时间内只能执行一段代码,为了控制要执行代码,就有一个js任务队列,这些任务会按照他们添加到队列的顺序执行,延时器的第二个参数告诉了js在过多长时间把当前任务添加到队列中,如果队列是空的,则添加代码立即执行,不是空的,那就让她等前面的执行完在执行。

调用延时器该方法会返回一个数值Id, 表示超时调用这个超时调用Id是计划执行代码的唯一标识符,可以通过他来取消尚未执行的超时调用计划,可以调用cleartimeout()  方法并将相应超时调用Id作为参数传递进去。


只要在指定时间为过去之前调用cleartimeout()  就可以完全取消超时调用,但设置超时调用后马上调用cleartimeout(),结果就跟什么也没发生一样。


取消尚未执行的间歇调用,可以使用clearInterval() 方法并传入简写调用ID,取消间歇调用的重要性要远高于超时调用,因为不加干涉,间歇调用会一直执行倒也年卸载,

真正的开发环境中,后一间歇调用可能会在前一个间歇调用结束之前启动。

使用超时调用,则完全避免这一点。

----------------------------------------------------------------------------------------------------------------------------------

补充一些题:

//    for(var i=0;i<4;i++){
//        setTimeout(function(){
//            console.log(i);//4 4 4 4
//        },i*1000)
//    }

//    for(var i=0;i<4;i++){
//        (function(i){
//            setTimeout(function(){
//                console.log(i);
//            },i*1000)
//        })(i);//0 1 2 3
//    }

//    for(var i=0;i<4;i++){
//        (function(){
//            setTimeout(function(){
//                console.log(i);
//            },i*1000)
//        })();//4 4 4 4
//    }

//    for(var i=0;i<4;i++){
//        (function(){
//            setTimeout(function(){
//                console.log(i);
//            },i*1000)
//        })(i);//4 4 4 4
//    }

//for(var i=0;i<4;i++){
//        (function(i){
//            setTimeout(function(){
//                console.log(i);
//            },i*1000)
//        })();//undefined四个一起输出
//    }

//for(var i=0;i<4;i++){
//        (function(){
//            setTimeout(function(){
//                console.log(i);
//            },500)
//        })();//四个4
//}


//for(var i=0;i<4;i++){
//    (function(i){
//        setTimeout(function(){
//            console.log(i);
//        },500)
//    })(i);//0 1 2 3一起输出
//}

还有个Event Loop  明天再写。

呃呃呃也是参考阮一峰大神的博客的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值