如何在设定的时间后处理一个可观察对象

本文关键字:一个 对象 观察 后处理 时间 | 更新日期: 2023-09-27 18:07:38

我有一个可观察对象,它以固定的速率每2秒向某个观察者发送数据。我想要一种方式,在2分钟过去后,发送数据的可观察对象将在告诉主体它完成后自行处理。我使用2个计时器,一个用于发射2秒间隔的数据,另一个用于总2分钟持续时间,因此它可以发送OnComplete。我想知道是否有一种方法,也处置自己后2分钟已完成使用计时器?

我的代码看起来像这样:

Observable.Create<>(
    observer =>
    {
        var timer = new Timer();
        timer.Elapsed += (s, e) => observer.OnNext( *send some string* );
        timer.start();
        return Disposable.Empty;
    }
)

如何在设定的时间后处理一个可观察对象

这真的很简单。只需这样做:

Observable
    .Interval(TimeSpan.FromSeconds(2.0))
    .TakeUntil(Observable.Timer(TimeSpan.FromMinutes(2.0)))
    .Subscribe(x =>
    {
    });

这将在2分钟后自动结束可观察对象,并为你取消订阅。