async 函数
async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已
Generator 函数读取文件例子
1 | var fs = require('fs'); |
async 函数改写
1 | var asyncReadFile = async function () { |
async 函数优点
内置执行器,不用像Generator函数一样调用next()方法
更好的语义
更广的适用性
yield命令后面只能是 Thunk 函数或 Promise 对象,而async函数的await命令后面,可以是Promise 对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作(相当于直接返回Promise.resolve(“成功了”))返回值是 Promise 可以进行链式调用(.then(function(res){}))
async 实例
1 | function a(){ |
结论
await后面的代码,需要等待await的结果
await后面的表达式,可以为任意类型
如果使用return语句会返回return的结果,在.then回调中可以取到,若不使用return,则返回undefined
如果await的结果返回为reject(),则不会执行后面的代码
在写await操作的时候,判断是否可能会失败,如果可能失败,则用try{ }catch (e){ }块捕获异常,可以让下面的代码正常执行