async和await和Promise之间的关系

 1、async是?

定义异步函数(内部通常有异步操作),返回Promise对象

(函数返回Promise→显式返回return的Promise;

    函数返回非Promise→隐式返回Promise.resolve()包装的return值;)

 2、await在等啥?

只能放在async函数中,等待右侧表达式结果

(函数→结果=return值;

  字符串→结果=字符串;)

 3、await等到了又要干哈?

wait 等到了它要等的东西,一个 Promise 对象,或者其它值,

  • 如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。
  • 如果它等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。

阻塞后面的代码,先执行async外部的同步代码,同步代码执行完再回到async内部,拿到运算结果

(表达式返回Promise→等待Promise对象fulfilled,再将resolve参数作为表达式的运算结果;

   表达式返回非Promise→直接作为表达式的运算结果;)

执行顺序:

(1)await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成;

(2)若 Promise 正常处理(Resolved,又称Fulfilled),其回调resolve函数的参数作为 await 表达式的值,继续执行 async function;

(3)若 Promise 处理异常(Rejected),await 表达式会把 Promise 的异常原因抛出;

具体实现代码:https://segmentfault.com/a/1190000007535316

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值