async和await关键字

56 阅读1分钟

ES7 标准中新增的 async 函数,从目前的内部实现来说其实就是 Generator 函数的语法糖。

它基于 Promise,并与所有现存的基于 Promise 的 API 兼容。

async 关键字

  1. async 关键字用于声明⼀个异步函数(如 async function asyncTask1() {...}
  2. async 会⾃动将常规函数转换成 Promise,返回值也是⼀个 Promise 对象
  3. async 函数内部可以使⽤ await
  4. 普通函数定义前加async关键字,普通函数变成异步函数
  5. 在异步函数内部,使用return关键字进行结果返回,return关键字代替了resolve方法
  6. 异步函数的返回值默认是promise对象
  7. 调用异步函数,再链式调用then方法获取异步函数执行结果
  8. 在异步函数内部,使用throw关键字抛出程序异常
  9. 调用异步函数,再链式调用catch方法获取异步函数执行的错误信息
  10. async函数可能包含0个或者多个await表达式

await 关键字

  1. await 用于等待异步的功能执⾏完毕 var result = await someAsyncCall()
  2. await 放置在 Promise 调⽤之前,会强制 async 函数中其他代码等待,直到 Promise 完成并返回结果
  3. await 只能与 Promise ⼀起使⽤
  4. await 只能在 async 函数内部使⽤
  5. await 关键字只能放到 async 函数里面。
  6. await 后面可以放任何表达式,不过我们更多的是放一个返回promise对象的表达式
  7. await 关键字可以暂停异步函数向下执行,直到promise返回结果