即使没有错误,未来的"then"也会运行"catchError"



代码:

Future<int> _future() async => 1;
void main() {
_future()
.catchError((e) => print('catchError = $e'))
.then((value) => print('value = $value'));
}

AFAIK,catchError返回一个新的Futurethen应在catchError运行后运行。但在上面的代码中,并没有错误,因此catchError永远不会运行,但then确实会运行。为什么会这样?

Future.catchError的文档说明:

返回一个新的Future,该CCD_8将与此future的结果或调用onError回调的结果一起完成。

如果catchError回调触发,则执行someFuture.catchError(...).then(...)不会仅执行then回调;当原始CCD_ 14完成或如果CCD_。

最新更新