为什么 setInterval() 会有这样的行为?

问题描述 投票:0回答:0

我正在使用 setInterval 执行简单的 javascript 函数,它只打印日期和时间

console.log('before',new Date().toLocaleString(), new Date().getMilliseconds())
setInterval(() => {
    console.log(new Date().toLocaleString(), new Date().getMilliseconds());
}, 1000);

代码的输出是

before 7/27/2023, 9:06:14 PM 364
7/27/2023, 9:06:15 PM 367
7/27/2023, 9:06:16 PM 370
7/27/2023, 9:06:17 PM 372
7/27/2023, 9:06:18 PM 376
7/27/2023, 9:06:19 PM 378
7/27/2023, 9:06:20 PM 382

我的问题是为什么它总是在每次执行代码时添加一些毫秒,好吧,我知道实际将函数添加到调用堆栈需要一些抖动毫秒,那么它不应该总是在之前的函数调用中添加抖动毫秒。

为什么输出不会是这样的?

before 7/27/2023, 9:06:14 PM 364
7/27/2023, 9:06:15 PM 367
7/27/2023, 9:06:16 PM 367
7/27/2023, 9:06:17 PM 367
7/27/2023, 9:06:18 PM 368
7/27/2023, 9:06:19 PM 367
7/27/2023, 9:06:20 PM 367
javascript node.js asynchronous
© www.soinside.com 2019 - 2024. All rights reserved.