我的道歉不是一個RxJS編碼器 - 在C#代碼我。下面介紹如何在C#中做到這一點:
IObservable<string> query =
Observable
.Merge(
observable1.Take(1).Select(x => "hold"),
Observable.Timer(TimeSpan.FromSeconds(6.0)).Select(x => "hold"))
.Skip(1);
現在,我可以測試這個是這樣的:
var observable1 = new Subject<long>();
IObservable<string> query =
Observable
.Merge(
observable1.Take(1).Select(x => "hold"),
Observable.Timer(TimeSpan.FromSeconds(6.0)).Select(x => "hold"))
.Skip(1);
Console.WriteLine(DateTime.Now);
query.Subscribe(x => Console.WriteLine(DateTime.Now));
Thread.Sleep(1000); // 1 second
observable1.OnNext(42);
產生:
2017/06/30 17:04:57
2017/06/30 17:05:03
更改測試代碼:
Thread.Sleep(6000); // 6 seconds
observable1.OnNext(42);
,你會得到:
2017/06/30 17:08:49
2017/06/30 17:08:55
最後修改測試代碼:
Thread.Sleep(10000); // 10 seconds
observable1.OnNext(42);
,你會得到:
2017/06/30 17:09:27
2017/06/30 17:09:37
讓我知道這是你想要的。
可能有人請編輯我的回答更改我的代碼以RxJS?
我更新的問題。當observable1被觸發但不早於5秒時,該事件應該被觸發。在你的情況下,如果observable1在6秒後觸發,那麼此事件將在11秒後觸發。在這種情況下我需要6秒。 – Ildar