老师,这个async 和 await的改写后的这个例子的代码,我每一句都看不懂呀!!!

老师,这个async 和 await的改写后的这个例子的代码,我每一句都看不懂呀!!!

正在回答 回答被采纳积分+1

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

1回答
好帮手慕慕子 2022-11-06 18:22:44

同学你好,可以参考如下解析理解:

1、wait函数内return返回的是一个Promise对象

https://img1.sycdn.imooc.com//climg/6367890e098d60a407440214.jpg

该Promise里面的书写了一个定时器,根据传入wait方法的参数,决定多长时间后调用该定时器,并执行resolve方法,改变Promise状态为成功。

2、如果不使用async和await,那么就需要结合then方法来调用wait方法返回的Promise实例,等到其执行为成功状态,然后再执行下一个then方法,即如下所示代码

https://img1.sycdn.imooc.com//climg/636789f409d9d8cf11701186.jpg

后面使用async和await,这是一种固定的语法格式,可以简单理解为,使用了async和await后,直接在wait函数前添加await关键字,那么就会等到wait里面的异步代码执行完之后,再执行后面的代码,参考下图标注

https://img1.sycdn.imooc.com//climg/63678a7d0978b97714320854.jpg

后面的await wait(2000)也是同样的道理,会等到两秒后执行完里面的异步操作后,才接着执行后面的代码。

祝学习愉快~

  • 老师,第一个问题:您说的这里的定时器里面的resolve和ms是啥意思?分别代表什么?从哪来的呢?

    https://img1.sycdn.imooc.com//climg/6367ccf609a4277108040281.jpg

    第二个问题:下面截图里标记为②③④⑤处调用的wait()方法是调用了标记为①位置处创建的wait()函数吗?如果不是调用的①位置处的,那这个后面调用的wait()函数从哪来的呢?


    https://img1.sycdn.imooc.com//climg/6367cddc09432f2904420422.jpg

    2022-11-06 23:12:33
  • 问题解答如下:

    1、resolve是Promsie中提供的默认参数,调用该函数可以将promise状态转为成功态。

    ms是定义wait方法设置的形参,表示定时器的时间间隔,在调用wait函数时,传入的参数就会赋值给ms,例如:wait(2000) 调用waite传入的2000 就会赋值给ms。

    2、①位置表示创建,也就是声明函数wait

    后面的②③④⑤处,是调用①位置处声明的函数wait

    祝学习愉快~

    2022-11-07 11:18:42
  • 直接在wait函数前添加await关键字,那么就会等到wait里面的异步代码执行完之后,再执行后面的代码” 我可以理解成 原本程序遇到异步的代码会直接跳过,继续往下执行;现在有了 await之后,程序会先把异步里面的代码执行完,再往下执行嘛?

    2023-03-21 11:10:39
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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