event-loop 事件循环机制

2023-04-22  本文已影响0人  Rebirth_914
  function fun1() {
    console.log(1);
  }
  function fun2() {
    console.log(2);
    fun1();
    console.log(3);
  }
  fun2();// 2 1 3

(2)js中的异步操作,比如fetch、setTimeout、setInterval。压入到调用栈中的时候里面的消息会进去到消息队列中去,消息队列中会等到调用栈清空之后再执行。

 function fun1() {
    console.log(1);
  }
  function fun2() {
    setTimeout(() => {
      console.log(2);
    }, 0);
    fun1();
    console.log(3);
  }
  fun2(); // 1 3 2

(3)promise async await异步操作的时候会加入到微任务中去,会在调用栈清空的时候立即执行

  const p = new Promise((resolve) => {
    //调用栈中加入的微任务会立马执行
    console.log(4);
    resolve(5);
  });
  function fun1() {
    console.log(1);
  }
  function fun2() {
    setTimeout(() => {
      console.log(2);
    }, 0);
    fun1();
    console.log(3);
    p.then((resolve) => {
      console.log(resolve);
    });
  }
//微任务优先消息队列执行
  fun2(); //4 1 3 5 2
上一篇 下一篇

猜你喜欢

热点阅读