// 宏任务 (第一次代码执行的环境 script标签 setTimeout ui渲染) 微任务:promise process.nextTick
// 单线程(主线程) 工作线程 webworker 辅助线程
//js执行机制 =》事件循环机制
//js异步分为两部分,一是宏任务(setTimeout,script, ui渲染),二是微任务(promise,process.nextTick)
//默认再浏览器中,js会先执行当前栈中的代码:同步代码,同步代码执行完毕后会清空第一个微任务,执行的过程中会注册一些微任务,在执行下一个宏任务之前清空一次微任务
//再去执行下一个宏任务
console.log("01")
setTimeout(()=>{
Promise.resolve().then(()=>{
console.log('settimeout - then1');
setTimeout(()=>{
console.log('last timeout')
})
})
console.log(1);
})
setTimeout(() => {
console.log(2);
});
setTimeout(() => {
console.log(3);
});
Promise.resolve().then(()=>{
console.log('then');
setTimeout(function () {
console.log("哈哈哈")
})
})
Promise.resolve().then(()=>{
console.log('then');
})
Promise.resolve().then(()=>{
console.log('then');
});
console.log("02")
执行结果: