请教大佬们一个事件循环的问题
nodejs吧
全部回复
仅看楼主
level 4
setTimeout的延迟,我设置的延迟20ms,while循环那里我阻塞50ms,理论上setTimeout执行的时间应该是文件读取完成后50ms左右,可是我打印的结果是70ms左右,也就是说IO事件执行完成之后,又延迟了20ms。换成别的时间,结果也是定时器的延迟与while阻塞的和。
就是想问下,while循环阻塞之后,定时器的时间已经到了,为什么我这里确实while循环完成之后,定时器才刚刚执行的样子,延迟20ms,才执行定时器的回调。
2021年07月12日 08点07分 1
level 12
这字体看着烟花,手机党已经阵亡
2021年07月13日 01点07分 2
楼下[乖]
2021年07月13日 02点07分
level 4
重新放图
按理说文件读取2~3ms,然后while循环的阻塞时间大于定时器的延迟,while循环结束后,定时器的回调就应该执行了,delay应该是while循环阻塞的时间加上读取文件耗时才对。可是我这里确实阻塞耗时加上定时器的延迟,就很奇怪。
---------------------------------------------------
下面放教程上面的代码
2021年07月13日 02点07分 3
level 12
按你写的我的运行结果也是正确的
2021年07月13日 04点07分 4
我在while那里阻塞2000ms,并且在循环内部打印些信息,setTimeout延迟1000ms。按理说循环的打印结束后立即打印setTimeout的打印,但是我这边while循环的打印结束后,有很明显延迟,才打印setTimeout的内容。
2021年07月13日 06点07分
为什么我这边是fs模块执行完成之后,才初始化setTimeout。用了两台Win10,一台win7都是这样。大佬,你是用的mac吗,难道和操作系统有关?这视频上用的是mac,一毛一样的代码,简直奇怪。
2021年07月13日 06点07分
level 12
delay 51
fileReaderTime 1
2021年07月13日 04点07分 5
level 12
不过setTimeout好像本来也不准,设置为2000后结果变成
delay 2012
fileReadTime 1
2021年07月13日 04点07分 6
level 12
nodejs单线程处理任务时不能精确计时,服务端程序通常会采用一个外部模块来做毫秒级计时器
2021年07月13日 04点07分 7
1