async 和 await 语法糖

async 和 await

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

示例

Future<String> Demo1() async {
  return Future.delayed(Duration(seconds: 1), () => "demo1");
}

Future<String> Demo2() async {
  return Future.error("运行错误");
}

void main(List<String> args) async {
  try {
    String res = await Demo1();
    print(res);
  } catch (err) {
    print(err);
  }
  try {
    String res = await Demo2();
    print(res);
  } catch (err) {
    print(err);
  }
}