定时器每隔2秒调用方法a, a方法里面有个延时器,延时5秒执行

定时器每隔2.5秒调用方法a, a方法里面有个延时器,延时5秒执行
setInterval(function () {
console.log('1111');
setTimeout(function(){
console.log('2222')
}, 5000);
},2500)

            为啥只有第一次延时5秒执行,

3个回答

可能是第一次方法执行时间长吧

执行完那个延时就销毁了啊

你要知道不管你定时器时间怎么设置 你每执行一次setInterval都会设置一个setTimeout所以他们总的执行次数一定是相同的
只是在这里你设置的时间为setInterval为2.5秒执行一次 同时设置一个5秒后执行的setTimeout
但是最初运行的时候 会在执行了两次setInterval后再来执行第一次所设置的setTimeout 并且之后会执行一次setInterval 就执行一个setTimeout
你可以把代码改成这样会比较好理解点:

var i = 0, j = 0;
setInterval(function () {
    console.log('setInterval第'+(++i)+"次执行");
    setTimeout(function(){
        console.log('setTimeout第'+(++j)+"次执行")
    }, 5000);
},2500)
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐