2017-04-01 8 views
1

このようなObservableによって放出された一連の値を取ろうとしていますが、Rx.Observable.of(["add", "edit", "destroy"])ですが、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観測値が放出されるたびに名前を発行することです。

演算子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秒待つのが少し長いと思います。早速のお返事ありがとうございます。これはちょうど私が存在しなければならないと知っていた解決の種類です。 :) –

関連する問題