1、js是单线程的,同一时间只能做一件事
2、js任务队列:异步任务,
3、setTimeout异步任务
4、同步任务优先于异步任务
console.log(‘A’);
while(true){}
console.log(‘B’)
都是同步的,所以只输出A
for(var i=0;i<4;i++){
setTimeout(function(){
console.log(i)
},1000)
}//4个4
遇到setTimeout,不执行,等到时间到了放入异步队列
Event Loop(事件循环)
执行栈是同步任务
同步任务在运行栈中,遇到setTimeout,把它放入异步队列,运行栈中空了,就执行异步任务
什么时候会开启异步任务,常见的异步任务
1、setTimeout和setInterval
2、dom事件(addeventListner)
3、es6中的promise