js单线程的概念:同一个时间内只能干一件事情
任务队列:有同步任务和异步任务,同步任务执行完才去执行异步任务。setTimeout异步任务,异步任务要挂起
Event Loop(事件循环):浏览器的引擎遇到settimeout识别是异步,不会放到运行栈里,浏览器把这个异步任务保留,浏览器time模块时间到,放到异步任务队列,同步任务结束后,执行异步任务,放到运行站执行,如此循环。
任务栈的异步任务放入时间:
什么时候去异步队列取异步任务:
开启异步任务
1:setTImeout,setIntreval
2:DOM事件
3:ES6的promise
for (var i=0;i<4;i++) {
setTimeout(function () {
console.log(i)
},0)
}
结果:输出4个4
网友评论