首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxDart BehaviorSubject混淆

RxDart BehaviorSubject混淆
EN

Stack Overflow用户
提问于 2020-08-12 23:09:14
回答 1查看 1.1K关注 0票数 0

我在我的颤振项目中使用RxDart已经有一段时间了。然而,我感到困惑的是,定义BehaviorSubject可以直接侦听主题,也可以侦听主题的流。我没能真正指出其中的区别。

示例

代码语言:javascript
复制
BehaviorSubject<String> _mySubject = BehaviorSubject();

_mySubject.listen((value) => { print('Logging $value'} );
_mySubject.stream.listen((value) => { print('Logging $value'} );

此外,BehaviorSubjects似乎提供了两种方法来访问最后发出的值,我看到的文档是同步的value getter。以及返回FutureFuture getter。

我再一次感到困惑。如果没有发出任何消息,那么为什么value getter不返回null?相反,它只是在等待。我找到的唯一解决办法是用空值为主题添加种子。

最后,我尝试使用last getter作为未来,它永远不会回来。是否有数据。在这个问题上打电话似乎不起作用。

编辑:

谢谢@pskink指出stream getter返回Subject本身,因此我的前两个示例没有区别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-26 09:38:42

如果还没有发出任何消息,value应该返回null,不知道为什么它不适合您。您使用的是哪个版本的RxDart?

另一方面,last的工作方式有点不同。它将返回流关闭后的最后一个值。因此,您需要调用_mySubject.close();然后将完成未来(只要流已经发出任何值,否则就会出现错误)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63385841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档