异步(待更新+学习笔记)
首先,还是看到一道面试题
for ( var i = 0 ; i < 10 ; ++i ) { setTimeout(function(){ console.log(i); },0) }
输出结果比较诡异。为10个10.
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。for ( var i = 0 ; i < 10 ; ++i ) { setTimeout(function(){ console.log(i); },0) } //相当于 ++i(0) setTimeout() ++i(1) setTimeout() ++i(2) setTimeout() . . . ++i(9) setTimeout() //然而真正执行的顺序是 ++i(0) ++i(1) ++i(2) . . . ++i(9) setTimeout(i) //第一次 setTimeout(i) //第二次 . . . setTimeout(i) //第十次
- 上述涉及到一个非常重要的知识点,就是setTimeout(function,xx)的第二个参数xx。这个函数到底什么时候执行呢?
- 正常情况是调用setTimeout(function,xx)。js会启用定时器timer,大约xxms后执行。
- 其实执行时间是在浏览器不忙的时候执行。
- 比如你设置的xx为5ms。前面队列需要10ms,那么函数会在10ms后执行。
如果你设置的xx为20ms,就会在20ms后执行(20ms > 10ms)【此条等待实际例子验证】

更多精彩