async/await

原创 黄灿灿 随笔 笔记 97阅读 2019-03-08 14:18:20 举报

理解 async/await

async 函数是 Generator 函数的语法糖。使用 关键字 async 来表示,在函数内部使用 await 来表示异步。

语法

async 函数返回一个 Promise 对象
async 函数内部 return 返回的值。会成为 then 方法回调函数的参数。

如果 async 函数内部抛出异常,则会导致返回的 Promise 对象状态变为 reject 状态。抛出的错误而会被 catch 方法回调函数接收到。

async 函数返回的 Promise 对象,必须等到内部所有的 await 命令的 Promise 对象执行完,才会发生状态改变
也就是说,只有当 async 函数内部的异步操作都执行完,才会执行 then 方法的回调。

正常情况下,await 命令后面跟着的是 Promise ,如果不是的话,也会被转换成一个 立即 resolve 的 Promise

如果返回的是 reject 的状态,则会被 catch 方法捕获。

Async 函数的错误处理

先来看下面的例子:

如上面所示,当 async 函数中只要一个 await 出现 reject 状态,则后面的 await 都不会被执行。
解决办法:可以添加 try/catch

如果有多个 await 则可以将其都放在 try/catch 中。

如何在项目中使用

依然是通过 babel 来使用。
只需要设置 presets 为 stage-3 即可。
安装依赖:

修改.babelrc:

这样就可以在项目中使用 async 函数了。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复