老师,关于定时器何时开始计时我有个疑问

来源:17-3 异步和单线程-单线程

Dong大瓜

2019-05-09

图片描述
按照老师说的是等到同步代码执行完后setTimeout才开始倒计时,就上面这段代码,就是说得等 alert 被点击确定后才开始计算2秒并打印。但是实际操作中,我故意停留有10秒后才把alert点掉,这时并没有出现“2秒后才打印setInterval”这种情况,而是直接就打印出来了,这点我就有点疑惑。

我的理解是程序执行到定时器时就开始倒计时,同时代码依然往下执行,等到倒计时完毕后再把异步代码加入等待队列,然后等同步代码执行完后,再去执行等待队列中的异步代码

也不知道也对不对,请老师看看

写回答

1回答

双越

2019-05-09

“等同步代码执行完再开始计时”说法不严谨,也是我之前的一个疏漏,也感谢你此处的提醒。

实际上,计时是触发了 setTimeout 函数执行的时候就开始了,技术结束之后将函数放入 task queue ,然后等待同步代码执行完之后再执行。

详细的流程,推荐你参考 https://segmentfault.com/a/1190000017419328#articleHeader2 

0
1
Dong大瓜
好的,谢谢
2019-05-09
共1条回复

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程