我一直在寻找了解这 3 个:
我想使用它们,并知道何时、为什么使用它们,使用它们有什么好处,尽管我已经阅读了文档、观看了教程并搜索了谷歌,但我对此没有任何理解。
那么他们的目的是什么?一个真实的案例将是最受欢迎的,它甚至不需要编写代码。
我更喜欢一个干净的解释,而不仅仅是“a b =
非常感谢。
不同的可观察类型,非直观的命名,我知道lol方便的总结。
Subject
-订阅者只能在订阅后获得发布的值。 < Li > < code > behavior subject -新订户在订阅后会立即获得上次发布的值或初始值。 < li>
ReplaySubject
-新订户在订阅后立即获得所有以前发布的值
const mySubject = new Rx.Subject();
mySubject.next(1);
const subscription1 = mySubject.subscribe(x => {
console.log('From subscription 1:', x);
});
mySubject.next(2);
const subscription2 = mySubject.subscribe(x => {
console.log('From subscription 2:', x);
});
mySubject.next(3);
subscription1.unsubscribe();
mySubject.next(4);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.12/Rx.min.js"></script>
归根结底是行为和语义学
>
主题
- 订阅者将仅获取订阅后发出的已发布值。问问自己,这就是你想要的吗?订阅者是否需要了解有关以前值的任何信息?如果没有,那么您可以使用它,否则选择其他之一。例如,组件到组件的通信。假设您有一个组件,该组件在单击按钮时发布其他组件的事件。您可以使用带有主题的服务进行通信。
< code>BehaviorSubject -缓存最后一个值。订户将在初始订阅时获得最新值。这个主题的语义是表示一个随时间变化的值。例如登录的用户。初始用户可能是匿名用户。但是一旦用户登录,新值就是经过身份验证的用户状态。
行为主体
使用初始值进行初始化。这有时对编码首选项很重要。例如,假设您用 null
初始化它。然后在订阅中,需要执行 null 检查。也许还行,也许很烦人。
< code>ReplaySubject -它可以缓存指定数量的发射。任何订阅者都将在订阅时获得所有缓存的值。你什么时候需要这种行为?老实说,我不需要这种行为,除了以下情况:
如果您初始化一个缓冲区大小为1的Replay学科
,那么它实际上的行为就像一个行为主体
。最后一个值总是被缓存,因此它的行为就像一个随时间变化的值。有了这个,就不需要像用null
初始化的行为主体
那样进行null
检查。在这种情况下,直到第一次发布之前,不会向订阅者发出任何值。
因此,这实际上取决于你所期望的行为(至于使用哪一种)。大多数时候,您可能希望使用BehaviorSubject
,因为您真正想要表示的是“随时间变化的值”语义。但我个人认为用1
初始化的ReplaySubject
的替换没有任何问题。
当你真正需要的是一些缓存行为时,你要避免使用香草主题
。举个例子,你正在编写一个路由保护或解析。你在那个保护中获取一些数据,并在服务主题
中设置它。然后在路由组件中,你订阅了服务主体,试图获取在保护中发出的值。OOPs。值在哪里?它已经发出了,DUH。使用“缓存”主题!
我开始使用jupyter主题: https://github.com/dunovank/jupyter-themes 为了设置主题,我设置了主题,然后启动jupyter笔记本: 但是,我想保留jupyter笔记本的默认设置,并且只将单元格扩展到100%。因此,我运行以下恢复默认,设置主题,然后启动。 然而,这没有任何作用;我的笔记本仍然是默认宽度,而不是屏幕的100%宽度。 关于如何通过jupyt
我使用共享服务在2个独立组件之间传递数据。当我在共享服务中使用主题时,我无法在订阅组件的html中看到订阅的数据,但可以在订阅后在控制台中看到它。然而,如果我使用行为主题,它工作得很好。有人能解释一下原因吗? sharedservice.ts: 组件2.ts: 上面的控制台在两种情况下都打印出消息的值,但是没有以html的形式呈现主题。
这不是如何配置主题选项的副本,从这样的答案中可以清楚地看出。 我想修改或调整当前设置,意思是:我想加载当前配置的内容。例如,当前为配置的值,以便能够稍微调整它,比如使颜色更亮。 当我在中加载此键时,我看到默认为红色(),这显然不是主题所拥有的。 我知道我可以 1) 打开 2) 找到设置和 3) 复制/粘贴我的用户设置。但我正在寻找一种更友好/更简单的方法。 有没有更友好/更简单的方法?如何在我的用
我们能改变VS代码集成终端的颜色设置吗?我的看起来很暗,只有白色。
主题是一种将当前的一套视图 views 替换为另一套视图,而无需更改视图渲染代码的方法。 你可以使用主题来系统地更改应用的外观和体验。 要使用主题,你得配置 view 应用组件的 theme 属性。 这个属性配置了一个 yii\base\Theme 对象,这个对象用来控制视图文件怎样被替换。 你主要应该指明下面的 yii\base\Theme 属性: yii\base\Theme::$basePa
Jekyll 包含有一个强大的主题系统,因此您可以使用社区的模板和样式来定制自己的站点。Jekyll 主题打包了布局文件、包含文件及样式表。同时您也可以使用自己站点的内容去覆盖它们的默认内容。 安装主题 若要安装一套主题,请先将该主题添加到您站点的 Gemfile 中: gem 'my-awesome-jekyll-theme' 保存并应用 Gemfile 中相关的文件变化。 执行命令行 bun