关于await的执行顺序

来源:8-12 async-await是语法糖,异步的本质还是回调函数

慕桂英7180857

2021-01-27

     async function fn() {
            return Promise.resolve("fn"); 
        }
        async function clg() {
            console.log(await fn());// 8
        }
        async function async1() {
            console.log("async1 start");// 4
            await async2();
            console.log("async1 end");// 7
        }
        async function async2() {
            console.log("async2");// 5
        }

        console.log("aaaaa");// 1
        clg();
        console.log("fnn");// 2

        console.log("start");// 3
        async1();
        console.log("end");// 6

为什么输出“fn”比输出“async1 end”还晚呢?
event loop第一个轮询到的不应该是先await的fn()嘛?

写回答

2回答

双越

2021-01-27

你把 clg 函数的代码拆开,就能看明白了

        async function clg() {
            const res = await fn();
            console.log(res);
        }

我们课程里说过,await 的后面(下一行开始)就相当于异步 callback 中的内容。

所以,它输出会晚。

1
5
慕桂英7180857
非常感谢!
2021-01-28
共5条回复

Legolas_Xero

2021-03-24

await后面的代码相当于异步,这个异步是微任务还是宏任务

0
0

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4694 学习 · 1681 问题

查看课程