Skip to content

在async await中使用finally

1 背景

使用async await模式,主要是将异步模式改为同步模式,但是同时有些场景也需要无论是resolve还是reject都需要去进行一些必要的操作,如在掉用接口前,需要打开loading效果,在调用有结果之后,页面给响应式数据赋值之后,关闭loading效果,此时使用await async的方式,就会显得比较麻烦,需要在resolvereject两种模式下关闭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`);
  }
}
参考资源

https://stackoverflow.com/questions/50373337/how-to-use-promise-prototype-finally-in-async-await-syntax

Released under the MIT License.