asynchronous - 未取消 未来
问题描述
我尝试取消 Future,但仍然在 .then() 中获取执行代码。为什么它不起作用,我做错了什么?
var c = CancelableOperation.fromFuture(
Future.delayed(new Duration(seconds: 5), () {
}).then((data){
print("123"); // This code is always called...
})
);
c.cancel();
解决方案
https://pub.dartlang.org/packages/async
该类
CancelableOperation
定义了一个可以被其使用者取消的操作。然后,生产者可以监听这个取消,并在收到未来时停止生产。它可以使用CancelableCompleter
.
尤其是这部分
然后生产者可以监听这个取消并停止生产
所以价值的生产者应该停止工作。这并不意味着它不会返回结果。它可能会返回null
以指示它不是实际结果。
你想要的可能是CancelableCompleter
相反。
单元测试可能有助于理解这些类应该如何使用
推荐阅读
- vuejs2 - 样式在动态组件的模板中不起作用
- html - 如何将字符串转换为 Angular 中的链接并将链接嵌套到 HTML 中
- r - 如何用 data.table 替换 plyr::ddply
- sql-server - SqlException:关键字“INNER”和“AS”和“ORDER”附近的语法不正确
- java - 复选框状态未正确保存在 SharedPreference 中
- javascript - 如何将输入的文本传输到输出字段
- mysql - 我似乎无法找到一种方法来检查我的 mysql db (php7) 中是否收到了一封电子邮件
- javascript - 同一画布上的两个相等对象(拆分模式)webgl
- omnet++ - 模型错误:没有注册具有此 ID () 的 nic
- r - 如何使用非线性回归的结果预测模型的值