老师,关于定时器何时开始计时我有个疑问
来源:17-3 异步和单线程-单线程
Dong大瓜
2019-05-09

按照老师说的是等到同步代码执行完后setTimeout才开始倒计时,就上面这段代码,就是说得等 alert 被点击确定后才开始计算2秒并打印。但是实际操作中,我故意停留有10秒后才把alert点掉,这时并没有出现“2秒后才打印setInterval”这种情况,而是直接就打印出来了,这点我就有点疑惑。
我的理解是程序执行到定时器时就开始倒计时,同时代码依然往下执行,等到倒计时完毕后再把异步代码加入等待队列,然后等同步代码执行完后,再去执行等待队列中的异步代码
也不知道也对不对,请老师看看
写回答
1回答
-
“等同步代码执行完再开始计时”说法不严谨,也是我之前的一个疏漏,也感谢你此处的提醒。
实际上,计时是触发了 setTimeout 函数执行的时候就开始了,技术结束之后将函数放入 task queue ,然后等待同步代码执行完之后再执行。
详细的流程,推荐你参考 https://segmentfault.com/a/1190000017419328#articleHeader2
012019-05-09
相似问题