我想要一个等效于不隐式过滤其结果流的示例运算符:
var ints = new Subject<int>();
var pulse = new Subject<Unit>();
ints.Sample(pulse)
.Subscribe(Console.WriteLine);
ints.OnNext(1);
pulse.OnNext(Unit.Default);
ints.OnNext(2);
pulse.OnNext(Unit.Default);
pulse.OnNext(Unit.Default);
ints.OnNext(3);
// Prints 1, 2 instead of 1, 2, 2
我的连接尝试适用于上述示例,但在其他情况下失败(在热可观察对象上):
public static IObservable<TIn> SampleWithRepetition<TIn, TPulse>(this IObservable<TIn> source, IObservable<TPulse> pulse)
{
return from x in source
join _ in pulse on source equals Observable.Empty<Unit>()
select x;
}
是否可以在不使用基于状态的Observable.Create
方法的情况下定义这样的运算符?