Future 详解

Future 介绍

Future 原意是 " 未来、承诺 ",在 dart 中 Future 是一种类型,表示一种 "期待" 类型。

Future 的三种状态

Future 就像一个盒子,处于一种未知状态。

1. 刚刚创建,尚未完成的状态;
2. 正确完成的状态;
3. 出现错误的状态;

then()

then 函数是当异步函数正确执行完毕时自动执行的函数,开发者通过回调函数来完成后续逻辑:

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

Future<String> Demo2() async {
  return Future.delayed(Duration(seconds: 2), () => "demo2");
}

void main(List<String> args) {
  Demo2().then((value) => print(value));
  Demo1().then((value) => print(value));
}

使用 catchError() 处理错误

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

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

void main(List<String> args) {
  Demo2().then((res) {
    print(res);
  }).catchError((err) {
    print(err);
  });
}

then() 的连贯操作

为then() 函数设置返回值,然后就可以通过多个 then 来实现异步连贯操作。

一个连贯操作示例

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

void main(List<String> args) {
  Demo1().then((value) {
    return value * 2;
  }).then((value) {
    print(value);
  });
}