前端开发那些事儿

事件循环机制event loop - 宏任务 微任务

2021-07-17  本文已影响0人  JX灬君

知识前置:微任务(microtask),宏任务(macrotask),async和await是promise的语法糖。
Promise虽然是异步函数,但并不是全部是异步函数,只有then之后的部分才是异步函数,then之前的是同步函数。
案例1
async await函数转换成Promise函数
如果async函数里没有使用await函数,那么async函数就等于普通的function函数。

// 业务1 async await 写法
    async function async1() {
      console.log("A");
      await async2()
      console.log("B");
    }
    async function async2() { 
      console.log("C");
    }
    console.log("D");
// 业务1 转换成pomise 写法
    async function async1() {
      console.log("A");
      new Promise((resolve) => {
        console.log("C"); // 同步代码
        resolve()
      }).then(res => console.log("B")) //异步代码
    }
    console.log("D");
// 输出结果一样 D A C B

案例2
先微后宏原则

async function async1() {
      console.log("A");
      await async2()
      console.log("B");
    }
    async function async2() { 
      console.log("C");
    }
    console.log("D");
    setTimeout(function () { 
      console.log("E");
    }, 0)
    async1()
    new Promise(function (resolve) { 
      console.log("F");
      resolve()
    }).then(function () {  
      console.log("G");
    })
    console.log("H");

    /** 输出结果
     * D A C F H B G E
     * 
     * */
上一篇 下一篇

猜你喜欢

热点阅读