await的执行

await的执行

https://img1.sycdn.imooc.com//climg/630b553208b4715312871024.jpg

https://img1.sycdn.imooc.com//climg/630b553208ed0fa316430830.jpg

请问为什么这个代码执行后,结果是1 3 2,而不是1 2 3


正在回答

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

1回答

同学你好,1、该代码的执行流程是先输出“1”,然后会调用fun()方法,该方法会先暂停,然后执行console.log(3);,然后再去执行fun()方法。具体执行流程同学可使用debug试一下,如下所示:

https://img1.sycdn.imooc.com//climg/630c28fc09eda57c04790211.jpg

2、await  操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用。

    await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成。若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,继续执行 async function。

祝学习愉快!

  • 可是我这里await不是一个Promise对象,而是一个普通的 js 表达式,应该不算是异步吧,也会在执行的时候停住吗?就是直到 async function 后面的输出语句执行完才会执行 await语句 ?

    2022-08-29 16:24:06
  • 同学你好,此处是异步,async和await关键字可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise。所以在此处也是属于异步的,所以会在执行时先暂停。

    祝学习愉快!

    2022-08-29 17:09:13
  • 那是不是我可以理解为,只要出现了await,这条await所在的语句就是异步?

    2022-08-29 18:09:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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