/** * 异步任务:宏任务 微任务 * 宏任务:整体的script代码、settimeout、setinterval * 微任务:promise process.nextTick * 代码的执行顺序: * 先执行主线栈中(同步任务),在执行异步任务 * 先执行所有的微任务 全部执行完成后 在执行宏任务 */ // setTimeout(function() { // console.log('1');//a1 // }) // new Promise(function(resolve) { // console.log('2'); // resolve() // }).then(function() { // console.log('3');//b1 // }) // console.log('4'); // 2 4 3 1 // console.log(1) // setTimeout(function(){ // console.log(2); // let promise = new Promise(function(resolve, reject) { // console.log(7); // resolve() // }).then(function(){ // console.log(8) // }); // },1000);// 宏1 // setTimeout(function(){ // console.log(10); // let promise = new Promise(function(resolve, reject) { // console.log(11); // resolve() // }).then(function(){ // console.log(12) // }); // },0);//宏2 // let promise = new Promise(function(resolve, reject) { // console.log(3); // resolve() // }).then(function(){ // console.log(4) //b1 // }).then(function(){ // console.log(9) // b2 // }); // console.log(5) // 1 3 5 4 9 10 11 12 2 7 8 console.log('1'); setTimeout(function() { console.log('2'); // process.nextTick(function() { // console.log('3'); // })//a1 new Promise(function(resolve) { console.log('4'); resolve(); }).then(function() { console.log('5')//a2 }) })//宏1 // process.nextTick(function() { // console.log('6'); // }) //微1 new Promise(function(resolve) { console.log('7'); resolve(); }).then(function() { console.log('8') // 微2 }) setTimeout(function() { console.log('9'); // process.nextTick(function() { // console.log('10'); // }) new Promise(function(resolve) { console.log('11'); resolve(); }).then(function() { console.log('12') }) })//宏2 // 1 7 8 2 4 5 9 11 12