sinat_39161575
2019-05-21 16:33
采纳率: 0%
浏览 1.6k

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

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

            为啥只有第一次延时5秒执行,
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • china_binli 2019-05-21 16:35

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

    点赞 评论
  • lhk20171108 2019-05-21 16:50

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

    点赞 评论
  • 「已注销」 2019-05-22 10:50

    你要知道不管你定时器时间怎么设置 你每执行一次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)
    
    点赞 评论

相关推荐 更多相似问题