Javascript setInterval if语句无法正常工作

时间:2014-02-13 12:29:44

标签: javascript setinterval timing

我有一个问题:

如果我使用以下代码,则永远不会执行if语句:

var timer = setInterval(function(){
        // the date of new date is ofcourse a date in the future
        if (Date.now() == Date.parse(new Date(2014, 1, 13, 13, 4, 0, 0))){
            console.log('refresh done');
            clearInterval(timer);
        }
}, 1);

但如果我将==更改为>=,它将正确执行。这是因为Date.now()变化如此之快以至于在比较确实发生之前它会发生变化吗?

1 个答案:

答案 0 :(得分:3)

不能保证间隔每1ms运行一次,这取决于循环中发生了什么,JS只会尝试在运行它时运行所需的次数(我的意思是如果没有时间到运行此函数一秒钟JS将尝试在此时间后运行1000次)。此外,我认为有一个最小的间隔将被强制,它超过一毫秒。