采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
双越老师,这是我自己写的一个,为什么先输出async2 end,再输出async1 end,同样的任务类型。
我们一步一步来,总共会有7个执行结果,我们就假设产生一个异步的时候就会产生一个括号所以按同步代码的顺序我们会依次执行1和2因为2后面跟的是一个await async2,它是一个异步所以我们就产生了第一个括号,因为它下面的代码才会进行异步回调,所以3是会立马执行的,执行完3后,接着往下走又有一个await,又是一个异步,所以我们再产生一个括号,然后同理再执行4,执行完4后,因为它后面没有任何异步回调了,所以执行5,此时此刻我们所有的同步代码执行完,执行的过程我们可以表示成这样,1 2(3(4 5 |,解释就是一个括号表示一个异步产生,每个括号后面的第一个数字表示立马执行的同步代码,| 我们就表示成一个所有同步代码执行完时的一个结点,所以接下来我们应该做的就是怎么给前面产生的括号来添加括回‘)’,根据数学逻辑里的括号原则,也就是所谓的就近原则,第一个括回号就应该匹配最近的那一个括号,也就是4前面的那个括号,所以我们就应该先处理4前面的那一个异步回调,而承接4的那个异步回调,它里面执行的结果就是6,所以此时也就是我们前面产生的第二个异步就执行完毕了,效果就是1 2(3(4 5 | 6),所以7才是最后执行的那个结果,它后面的括回号才是与3前面的那个括号相对应,也就是第一个异步,所以最终效果可表示为1 2(3(4 5 | 6)7)。总结就是一个异步它包含一个整体,我们就用括号和括回()来表示一个完整体,所以我们在进行括回时它就应该和最近的那个括号,也就是最近的那一个异步进行组合,形成一个完整体。希望你能理解
本节讲的就是这个问题呀,你对具体的讲解内容有什么疑问吗?
一个函数中的多个await是明显的,但是await后面调用的函数是async/await函数,就不清楚执行顺序了
你把视频中不明白的地方,暂停,截图,并圈出哪句代码执行时不懂。我们得从细节入手,一步一步解决问题。
不好意思老师,我把重点代码圈出来了
登录后可查看更多问答,登录/注册
双越老师带你体系化掌握大厂前端面试知识与流程
857 8
116 7
244 6
431 5
465 5