首页 > 解决方案 > 即使在“catchError”中没有捕获到错误,Future 的“then”也会运行

问题描述

代码:

Future<int> _future() async => 1;

void main() {
  _future()
      .catchError((e) => print('catchError = $e'))
      .then((value) => print('value = $value'));
}

AFAIK,catchError返回一个新的Future并且then应该在运行后catchError运行。但是在上面的代码中,没有错误,因此catchError永远不会运行,但是then会运行。为什么呢?

标签: dart

解决方案


状态的文档Future.catchError

返回一个新Future的,它将使用这个未来的结果或调用onError回调的结果来完成。

只有当回调触发时,DoingsomeFuture.catchError(...).then(...)才会执行then回调;它在原始完成回调触发时执行回调。catchErrorthenFutureonError


推荐阅读