关于 await async resolve关键词理解

  • Post author:
  • Post category:其他


贵有恒,何必三更起五更眠;最无益,只怕一日一曝十寒。

一,await/sync

概念:async/await是es8的规范,

async 后面一般跟一个函数,也就是async一般跟在function前。

await必须放在aysnc里面的函数体范围内。await后面应该跟一个promise对象。

当使用了async/await后,程序流程就是:当执行到async/await程序时,进入async标识的函数体中,然后直到遇到了await,然后让await后面的代码执行(一般为一个异步操作,然后会返回一个promise对象),然后await能将右边promise的值返回给左边的变量。如 var bl=await promisObj; b1能够获取promise的值。同时如果async标识了的函数返回一个值的话,async函数左边的变量也能接收到其返回值,不过其返回值会是一个promise对象。

要注意await只能在async中使用,不然是没有效果的。其实async 和await联合起来使用相当于替代了Promise的then和catch方法,将async后面的函数里面的代码由异步变成了同步阻塞式,只有当await定义的函数执行完了代码才会继续往下执行,同时await还有返回值。然后,reject的值需要通过try {}catch(err){}捕获。