凡是异步代码和定时器代码都会等待主程序执行完毕再开始
异步操作:
1、定时器演示器
2、ajax
3、绑定的onclick事件函数
console.log(1);
setTimeout(function(){
console.log(2);
},0)
console.log(3);
//打印的顺序为1,3,2,因为setTimeout是异步函数
new Promise就会立即执行
console.log(1)
new Promise(function(resolve,reject){
console.log('2');
})
console.log(3);
//打印顺序为1,2,3
而.then是需要异步的
console.log(1)
let p1=new Promise(function(resolve,reject){
console.log('2');
})
p1.then(function(){
console.log(3);
})
console.log(4);
//打印顺序为1,2,4,3
宏任务:定时器延时器 微任务:promise
先同步 再取出第一个宏任务执行所有的相关微任务总会在下一个宏任务之前全部执行完毕
如果再遇见就先微后宏
consloe.log(1)
setTimeout(function(){
console.log(2)
},0)
new Promise(function(resolve){
console.log('3')
resolve();
}).then(function(){
console.log(4)
})
//1,3,4,2