我尝试取消Future,但是仍然在.then()中获取执行代码。 为什么它不起作用,我在做什么错了?
var c = CancelableOperation.fromFuture(
Future.delayed(new Duration(seconds: 5), () {
}).then((data){
print("123"); // This code is always called...
})
);
c.cancel();
答案 0 :(得分:3)
https://pub.dartlang.org/packages/async
CancelableOperation
类定义了可以被其使用者取消的操作。然后,生产者可以收听此取消消息,并在收到以后停止生产将来的消息。可以使用CancelableCompleter
创建。
尤其是这部分
然后制作人可以监听取消并停止制作
因此,值的生产者应该停止工作。这并不意味着它不会返回结果。它可能返回null
来表示它不是实际结果。
您想要的可能是CancelableCompleter
。
单元测试可能有助于理解应该如何使用这些类