gpt4 book ai didi

asynchronous - 如何在一个Dart中取消之前取消对Stream的映射()?

转载 作者:行者123 更新时间:2023-12-03 02:56:36 27 4
gpt4 key购买 nike

我有一个从数据库查询中获得的Stream。我相信查询将运行一段时间,并在运行时产生值,因此我希望能够在项目可用时立即向用户显示。

但是,一旦用户选择了一个项目,我就希望取消Stream。

我写这个很麻烦,因为我看不到如何才能同时获得对流的订阅,该订阅可以在以后取消,并且同时映射其元素,以便映射的流的使用者可以在它们处理项目时由原始Stream产生。

基本上,我认为我需要类似CancellableStream的东西,但在Dart SDK中看不到类似的东西。

到目前为止,我已经尝试过类似的方法:

final subscription = cursor.listen((entry) => process(entry));
// now I can cancel the subscription when needed, but how to
// return the processed items to the caller?

final processed = cursor.map((entry) => process(entry));
// now I have the processed Stream I wanted, but how can I cancel it?

最佳答案

我认为使用where(...)状态的hasPicked应该可以做你想要的

bool hasPicked = false;
...
final processed = cursor.where((entry) => !hasPicked).map((entry) => process(entry));

用户选择一个后,将 hasPicked设置为 true

关于asynchronous - 如何在一个Dart中取消之前取消对Stream的映射()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54792833/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com