我看过Dart的截屏视频Futures以及如何处理它们.它说有两种处理Futures混合同步代码的方法.这是示例代码:
import 'dart:async';
Map sanitizeParams(Map p) {/*.....*/}
Future sendToServer(Map p) {/*.....*/}
Future sendParams(Map params) => sendToServer(sanitizeParams(params));
Run Code Online (Sandbox Code Playgroud)
以上是不太喜欢的方式,这里的代码更好(根据制作截屏视频的方式):
import 'dart:async';
Map sanitizeParams(Map p) {/*.....*/}
Future sendToServer(Map p) {/*.....*/}
Future sendParams(Map params) =>
new Future.value(params)
.then(sanitizeParams)
.then(sendToServer);
Run Code Online (Sandbox Code Playgroud)
为什么第二个首选?
第一个原因是可读性:sanitizeParams需要在之前发生,sendToServer但它以不同的顺序读取,最好在使用期货时避免.
更重要的原因是,如果sanitizeParams抛出异常,则sendParams不会返回未来,而是抛出,这使得用其他期货更难以组合.第二个例子通过首先使参数可用作Future(Future.value)然后在其上链接其他函数来避免这种情况.
IIRC,这是在截屏视频中解释的.
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |