Subject 定义和解析
AsyncSubject 异步主题
BehaviorSubject 行为主题
PublishSubject 解体主题
ReplaySubject 重播主题
Subject 定义和解析
主题是一种在ReactiveX的某些实现中可用的桥梁或代理,它既充当观察者又充当Observable。
因为它是观察者,所以可以订阅一个或多个Observable,并且因为它是Observable,
所以可以通过释放它们来观察它所观察的项,还发出新的项。
因为一个主体订阅了一个Observable,它将触发Observable开始发出项目(如果Observable是“冷”的,也就是说,
如果它在开始发出项目之前等待订阅)。 这可以使最终的主题成为原始“冷”可观察对象的“热”可观察变量。
Thinking in words
Subject一般用于bridge或proxy,其实它什么都可以,特殊情况下作为bridge或proxy来使用;
Subject比较特殊,既可以当作Observer,又可以当作Observable,观察者是实体观察对象,
观察者必须要有Observable的来配对,那么Subject怎么进行工作的呢?
输出条件:必须要有订阅者,指定观察变量
其中,无论主题是cold还是hot,在订阅之前统统当作cold来处理,订阅之后统统当作hot来通知
输出结果

代码示例
public class No19_Subject : MonoBehaviour
{
void Start()
{
Subject<int> subject = new Subject<int>();
// Subject作为Observable
var take = subject.DelayFrame(100).Select(_ => 100);
take.Subscribe(value => Debug.LogFormat("Take: {0}", value));
// Subject作为Observer
subject.Subscribe(Next, Error, Complete);
subject.OnNext(66);
}
void Next(int value)
{
Debug.LogFormat("Next: {0}", value);
}
void

本文详细介绍了UniRx中的Subject类型,包括AsyncSubject、BehaviorSubject、PublishSubject和ReplaySubject。AsyncSubject只在源Observable完成时发出最后一个值;BehaviorSubject在订阅时发出最近的值或种子数据;PublishSubject不存储历史值,只实时传递;ReplaySubject则会重播所有源Observable发出的项目,无论观察者何时订阅。
最低0.47元/天 解锁文章
2291

被折叠的 条评论
为什么被折叠?



