最近,搭配koa和mysql2 (sequelize)使用的时候,查询数据库,会要捕获错误,sequelize提供的模型操作方法,均是返回promise对象,我们可以用then
… catch
这样的链式方法 来获取查询数据结果,捕获错误;但是koa 支持 aysnc/ await 语法,我们可以更简洁地操作。
1 | // 查询用户信息 |
try … catch
在使用aync/await,我们可以像写同步代码一样来完成数据的增删该查,但是这种方式我们无法捕获数据操作过程中的错误信息。如果需要捕获错误,我们可以借助 try {} catch{}。 下面是我demo中的错误处理代码
1 | // 查询用户信息 |
上述 try {} catch{} 捕获错误的方法,也是繁琐,因为aysnc/await 处理的函数均会返回一个promise对象,
我们可以包装promise,使其返回统一的格式的代码
1 | /** |
async 顺序
使用async的时候,代码执行的顺序很容易出错,比如我们要同时发起两个请求,可能会写出下面的代码
1 | function fetchName () { |
在上面的代码中,我们认为fetchName,fetchAvatar会并行执行,实际上并不会。fetchAvatar会等待fetchName执行完之后才开始请求。要并行请求的话需要像下面这样写:
1 | async function fetchUserParallel () { |
使用Promise.all来并发请求
1 | function fetchList (id) { |