异步编程之 async 和 await

Posted 熊喵先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步编程之 async 和 await相关的知识,希望对你有一定的参考价值。

继续 Dart 异步编程的第五篇 async 和 await。

async 和 await 是 Dart 异步编程用于简化异步 API 操作的两个关键字。它的作用就是能够将异步的代码使用同步的代码结构实现。相信学习过之前的 Future 和 Stream 的文章就知道,对于最终返回的值或者是异常都是采用“异步回调方式”。

然而 async-await 就是为了简化这些异步回调的方式,通过语法糖的简化,将原来异步回调方式写成简单的同步方式结构。需要注意的是:使用 await 关键字必须配合 async 关键字一起使用才会起作用。本质上 async-await 是相当于都 Future 相关 API 接口的另一种封装,提供了一种更加简便的操作 Future 相关 API 的方法。

1. 为什么需要 async-await

通过学习之前异步编程中的 Future 我们知道,Future 一般使用 then 和 catchError 可以很好地处理数据回调和异常回调。这实际上还是一种基于异步回调的方式,如果异步操作依赖关系比较复杂需要编写回调代码比较繁杂,为了简化这些步骤 async-await 关键字通过同步代码结构来实现异步操作,从而使得代码更加简洁和具有可读性,此外在异常处理方式也会变得更加简单。

1.1 对比实现代码

Future 实现方式:

void main() 
  _loadUserFromSQL().then((userInfo) 
    return _fetchSessionToken(userInfo);
  ).then((t

以上是关于异步编程之 async 和 await的主要内容,如果未能解决你的问题,请参考以下文章

异步编程之Async,Await和ConfigureAwait的关系

async 和 await 之异步编程的学习

async 和 await 之异步编程的学习

.NET4.5新特性之异步编程(Async和Await)的使用

任务Task系列之异步编程(async and await)

C#异步编程之async/await