dart - 即使在“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
会运行。为什么呢?
解决方案
返回一个新
Future
的,它将使用这个未来的结果或调用onError
回调的结果来完成。
只有当回调触发时,DoingsomeFuture.catchError(...).then(...)
才会执行then
回调;它在原始完成或回调触发时执行回调。catchError
then
Future
onError