在async await中使用finally
1 背景
使用async await模式,主要是将异步模式改为同步模式,但是同时有些场景也需要无论是resolve还是reject都需要去进行一些必要的操作,如在掉用接口前,需要打开loading效果,在调用有结果之后,页面给响应式数据赋值之后,关闭loading效果,此时使用await async的方式,就会显得比较麻烦,需要在resolve和reject两种模式下关闭loading效果(例如在vue中),现在就是想在页面渲染完成或者reject之后关闭loading效果。
2 前言
在调用后端接口之后,页面重新渲染之后或者确定不渲染之后,关闭loading效果。
3 实现
关键点
- 链式操作可以直接在finally中操作,使用async await模式的时候,可以使用如下方案。
async () => {
try {
const result1 = await firstAsynchronousFunction();
const result2 = await secondAsynchronousFunction(result1);
console.log(result2);
} catch(err) {
throw new Error(`Something failed`);
} finally {
console.log(`All Tasks are Done`);
}
}