async和await

async和await是ES2016(ES7)中提出的

async用于申明一个function是异步的;而await则可以认为是 async await的简写形式,是等待一个异步方法执行完成的。

也可以认为是generator函数的语法糖

  语法糖:对一些复杂操作的简化,可以使我们用更简单的方式去操作,提高了开发效率

async 表示函数中有异步操作,代表了 * 语法

await 表示等一等的意思 只有当前程序执行完毕之后,后续代码才会执行,代表了 yield关键字

特点:

  1 提高了代码的语义化

  2 await返回值是Promise对象

  3 await后面允许是任何数据

  4 在函数中内置状态函数的启动,直接执行函数即可,不需要通过next方法执行

当程序执行到await的时候,会交出程序的控制权,只有当异步操作完毕之后,后续的代码才会执行

如果await后面出现了其它数据,会返回一个监听resolved状态的promise对象

如果函数中出现了错误,会将错误信息追踪到错误队列中

返回对象

  awiat返回值是一个promise对象

    可以使用then方法监听成功时候状态

    可以通过catch方法监听失败时候的状态

await与yield一样:

  await只能出现在async中

  yield只能出现在generator函数中

原文地址:https://www.cnblogs.com/yess/p/14717823.html