DART:将来 then 的语法

2024-05-11

我不明白的语法then() clause.

1. myFuture(6).then( (erg) => print(erg) )

What´s (erg) => expr语法上?

我以为这会是一个函数,但是

then( callHandler2(erg)

不起作用,错误:

"Multiple markers at this line
- The argument type 'void' cannot be assigned to the parameter type '(String) -> 
 dynamic'
- Undefined name 'erg'
- Expected to find ')'"

2. myFuture(5).then( (erg) { callHandler(erg);}, onError: (e) => print (e)

What´s `onError: (e) => expr"` syntactically?

3.之间有区别吗onError:.catchError(e)变体?


1) The 胖箭是短匿名函数的语法糖。下面两个函数是相同的:

someFuture(arg).then((erg) => print(erg));
// is the same as
someFuture(arg).then((erg) { return print(erg); });

基本上,粗箭头基本上会自动返回下一个表达式的计算结果。

If your callHandler2具有正确的签名,您只需传递函数名称即可。签名是它接受参数的数量,因为未来将传递给then子句,并返回 null/void。

例如,以下内容将起作用:

void callHandler2(someArg) { ... }
// .. elsewhere in the code
someFuture(arg).then(callHandler);

2)参见答案1)。这粗箭头只是语法糖,相当于:

myFuture(5).then( (erg){ callHandler(erg);}, onError: (e){ print(e); });

3) catchError允许您在一系列 future 之后链接错误处理。首先重要的是要明白then调用可以被链接起来,所以then返回一个调用Future可以链接到另一个then称呼。这catchError将捕获来自所有同步和异步的错误Futures 在链中。通过一个onError参数只会处理错误Future它是您的任何同步代码的参数then堵塞。您的任何异步代码then块将保持未捕获状态。

大多数 Dart 代码最近的趋势是使用catchError并省略onError争论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DART:将来 then 的语法 的相关文章

随机推荐