js的setInterval 会延迟一秒解决的最佳实践

var start = document.querySelector('#start')
    start.onclick = ()=>{
    
    
        if(start.src.match('start')){
    
    
            start.src = '../image/end.png'
            time = 1000 * 60 * 25 + Math.ceil(+new Date() / 1000) * 1000
            //定时器 每隔一秒变化一次
            interval = setInterval(countDown, 1000);
            countDown();            
        }else{
    
    
            start.src = '../image/start.png'
            clearInterval(interval);
            time = 1000 * 60 * 25 + Math.ceil(+new Date() / 1000) * 1000
            interval = null;
            countDown();
        }
    }

countDown 这个函数作为定时调用的函数,通过在setInterval之后去执行原函数解决延时一秒调用的问题。

但是会出现时灵时不灵的问题,通过将去掉毫秒数的方法Math.ceil(+new Date() / 1000) * 1000 ,最终实现完整倒计时解决;

猜你喜欢

转载自blog.csdn.net/weixin_41858523/article/details/128025341