ES7 标准中新增的 async 函数,从目前的内部实现来说其实就是 Generator 函数的语法糖。
它基于 Promise,并与所有现存的基于 Promise 的 API 兼容。
async 关键字
async关键字用于声明⼀个异步函数(如async function asyncTask1() {...})async会⾃动将常规函数转换成 Promise,返回值也是⼀个 Promise 对象async函数内部可以使⽤await- 普通函数定义前加async关键字,普通函数变成异步函数
- 在异步函数内部,使用
return关键字进行结果返回,return关键字代替了resolve方法 - 异步函数的返回值默认是promise对象
- 调用异步函数,再链式调用
then方法获取异步函数执行结果 - 在异步函数内部,使用
throw关键字抛出程序异常 - 调用异步函数,再链式调用
catch方法获取异步函数执行的错误信息 - async函数可能包含0个或者多个
await表达式
await 关键字
await用于等待异步的功能执⾏完毕var result = await someAsyncCall()await放置在 Promise 调⽤之前,会强制 async 函数中其他代码等待,直到 Promise 完成并返回结果await只能与 Promise ⼀起使⽤await只能在async函数内部使⽤await关键字只能放到 async 函数里面。await后面可以放任何表达式,不过我们更多的是放一个返回promise对象的表达式await关键字可以暂停异步函数向下执行,直到promise返回结果