定时器设置成0秒为什么不是立即执行呢,为什么执行结果是1 3 2呢?是因为定时器是异步的,所以js不会先执行吗?感谢各位大佬解答!
4 回答
LEATH
TA贡献1936条经验 获得超6个赞
MM们
TA贡献1886条经验 获得超2个赞
简单粗略易懂的解释一下,一般for循环 处理dom节点 num++这种运算啊 此类的操作都是同步操作
同步操作有什么特点?就是从上到下依次执行 比如console.log(1) console.log(2) 先显示1后显示
2
请求ajax 给某个按钮添加一个事件比如点击,点击按钮就alert随便一个数字 setTimeout这种被称为异步操作
记住一个结论就好了所有同步代码执行完毕才会执行异步代码
也就是你的定时器不管延迟多少时间,也要等到同步代码都执行完毕之后才会执行
console.log(1);
btn.onclick = function() {
console.log('click me')
}
console.log(4);
setTimeout(function() {
console.log(3)
},0)
料青山看我应如是
TA贡献1772条经验 获得超8个赞
setInterval() 使得匿名函数进入事件队列,会在js引擎“有空”的时候执行,执行间隔每0s一次(相当于只要“有空”就执行)
一开始打印1没问题,然后把打印2的函数添加进事件队列,然后发现还要打印3并没有空,就先去打印3,然后没事干了有空了,就疯狂打印2222222。
event loop 了解一下
添加回答
举报
0/150
提交
取消