老师你好,async定义的函数

老师你好,async定义的函数

    ​async定义的函数,是不是只把 函数内部await上下的语句 变成同步执行的了。但是对于函数之外的语句,调用async函数,还是一个异步的执行?

    ​还是说,async函数定义之后,可以把全部的代码,都看成是同步的了?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,对于你的问题解答如下:

1、先了解下,由于await后面跟着的是定时器时(定时器是一个异步操作),不会等待定时器里面的代码执行完,而是直接执行后面的代码,然后再执行定时器中的代码,实际开发中,一般不会直接在await后面书写定时器的,所以这属于await一个特殊的注意事项,同学特殊记一下即可,在前面的图文节中也有介绍,可以回顾下,加深理解与记忆https://class.imooc.com/lesson/1639#mid=45809 

2、然后,我们不考虑这个特殊情况,再来分析同学的疑问,解答如下:

(1)async 定义的函数只会将函数内部await后面跟着的异步操作变成同步执行,函数内部的其他异步操作,依然是异步执行的,示例:

http://img1.sycdn.imooc.com//climg/60cc346c090cdb1607620326.jpg

await后面的timeout(2000)会变成同步执行,而下面的timeout(3000)就是异步执行的,所以控制台的输出结果为2000 end 3000 如下:

http://img1.sycdn.imooc.com//climg/60cc34e7094af32503930125.jpg

(2)对于函数之外,调用async定义的函数,是一个异步的操作,示例:

http://img1.sycdn.imooc.com//climg/60cc3513090ba93607190434.jpg

控制台先输出1,2,然后才输出调用start函数之后的结果,如下:

http://img1.sycdn.imooc.com//climg/60cc35410927b3ac02980197.jpg

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师