代码:
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.catchError
的文档说明:
返回一个新的
Future
,该CCD_8将与此future的结果或调用onError
回调的结果一起完成。
如果catchError
回调触发,则执行someFuture.catchError(...).then(...)
不会仅执行then
回调;当原始CCD_ 14完成或如果CCD_。