javascript执行机制

2023-08-15  本文已影响0人  程序猿的小生活
<script  setup>

/**
 * 说明:
 * 宏任务(script,setTimeout(回调函数function),setInterval(回调函数function),UI渲染,I/O,postMessage等)
 * 微任务(promise(回调函数 then catch),process.nextTick)
 * 宏任务回调队列
 * 微任务回调队列
 * javascript执行机制顺序
 * 1. 先执行宏任务(script,setTimeout,setInterval,UI渲染,I/O,postMessage等)
 *2.遇到setTimeout  setInterval此时将其回调函数注册后发布到宏任务事件队列中,
 *4.遇到promise立即执行,将其then catch回调发到微任务队列中
 *5.继续执行宏任务,宏任务执行结束后去微任务回调队列拿结果到主线程
 * 微任务回调队列全部执行完成再去宏任务回调队列拿结果
 */
class  stu{

  constructor(te,callback) {
    console.log("构造")
    this.te = te;
    this.callback=callback;
  }

  age(c){
    this.callback("我是类回调","张三")
    console.log("我今年"+this.te+"岁")
  }
}

let as=(x,y)=>{
console.log(x+y)
}
let yibu = (x)=>{

 x("1111","回调")
}
let  stu1 = new stu("10",as);
stu1.age(11)
console.log("我是宏任务console.log 第一个执行")//我先执行我先输出
//yibu(as);
let test=(resolve, reject)=>{
  console.log("我是Promise主程序,第二个执行")
         resolve("1111")
}
setTimeout(function (){
console.log("我是timout回调,我第五个执行")
},1000);
let pro = new Promise(test);
pro.then(result=>{
console.log("我是微任务promise的回调then,我第四个执行")
}).catch(result=>{
  console.log("我是微任务promise的回调catch,我第四个执行")
})

console.log("我是宏任务回调,我第三个执行")



</script>
上一篇下一篇

猜你喜欢

热点阅读