2017-04-01 25 views
1

我正在尋找像這樣的Observable發出的一系列值,但我希望每5秒發射一次每個值。如何用RXjs隨時間發射一組值?

目前我僞造這個使用setTimer()Subject這樣。

const actions$ = new Rx.Subject(); 

setTimeout(() => { actions$.next("add"); }, 5 * 1000); 
setTimeout(() => { actions$.next("edit"); }, 10 * 1000); 
setTimeout(() => { actions$.next("destroy"); }, 15 * 1000); 

但是看起來好像有一種方法可以做到這一點,而沒有太多的手動操作。我如何在不使用setTimeout()的情況下做到這一點?

+0

你忘了'.subscribe()' – topheman

回答

4

有很多方法可以用RxJS來做到這一點。

一個可能會創建一個interval可觀察,並使用它與zip一起發出一個名稱,每次interval observable發射。

zip運算符合並每當它發出一個值時它通過的可觀測量的排放。此處使用可選選擇器來忽略由interval可觀測值發出的增量整數。

const names = Rx.Observable.from(["add", "edit", "destroy"]); 
 
const interval = Rx.Observable.interval(500); 
 
Rx.Observable 
 
    .zip(names, interval, (name, i) => name) 
 
    .subscribe(name => console.log(name));
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>

而且因爲我是急性子,我減少了間隔500

+0

哈哈。我想5秒等待@cartant有點長。感謝您的快速回復。這正是我所知道的解決方案。 :) –

相關問題