扫码关注官方订阅号
不明白为何time using 都是5000ms ?我咋老觉得第一个是6000,第二个是7000?
是这样的,setTimeout的延迟时间是相对于他被调用时的时间,第一个在while的阻塞时间1000ms是包含在setTimeout的5000内的,第二个同理后面的5000ms执行完后,他会判断此时setTimeout的延迟时间相对于之前是否已经 了2000ms,如果过了就立即执行了,其实time using的时间就是MAX(setTimeout,while())的值
虽然settimeout会被入栈 但是延后时间是不会变的 只要没有阻塞 到了时间就会执行 第一个阻塞1000ms 后 执行延后5000ms的阻塞的1000ms也算在内, 第二个阻塞5000ms后会立即执行延后2000ms的
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
是这样的,setTimeout的延迟时间是相对于他被调用时的时间,第一个在while的阻塞时间1000ms是包含在setTimeout的5000内的,第二个同理后面的5000ms执行完后,他会判断此时setTimeout的延迟时间相对于之前是否已经 了2000ms,如果过了就立即执行了,其实time using的时间就是MAX(setTimeout,while())的值
虽然settimeout会被入栈 但是延后时间是不会变的 只要没有阻塞 到了时间就会执行 第一个阻塞1000ms 后 执行延后5000ms的阻塞的1000ms也算在内, 第二个阻塞5000ms后会立即执行延后2000ms的