時間がたつにつれて配列アイテムを放出したい(各放出の間に1秒の間隔を置いて)、すべてのアイテムが放出されたら何度も何度も繰り返す。RxJS5は時間の経過とともに配列アイテムを放出し、永遠に繰り返す
..
"1" ..
出力がある
const MY_ARRAY = ['one','two','three']; const item$ = Rx.Observable.interval(1000).take(MY_ARRAY.length).repeat().map(x => MY_ARRAY[x]); item$.subscribe(x => console.log(x));
おかげで、私はこれを行う方法を知っているが、私はより簡潔なものがあるかどうかを知りたいです
「two」
"t HREE」
"1"
"2"
"3"
など
EDIT:
ATOW、ここでの回答は次のように要約されています。..
const ARR = ['one', 'two', 'three'];
// TAKE YOUR PICK THEY ALL DO THE SAME
const item$ = Rx.Observable.interval(1000).map(i => ARR[i % ARR.length]);
// const item$ = Rx.Observable.interval(1000).zip(ARR, (a, x) => x).repeat();
// const item$ = Rx.Observable.interval(1000).zip(ARR).repeat().map(x => x[1]);
// const item$ = Rx.Observable.interval(1000).take(ARR.length).repeat().map(i => ARR[i]);
item$.subscribe((x) => {
console.log(x);
});
これを受け入れる。他の回答も素晴らしいですが、これは最短です(コードゴルフの優勝者)、最も読みやすいです。 RXJS演算子を完全に使用するわけではありませんが、単純な場合があります。 – danday74
これは素晴らしい答えですが、私の意見では読みにくいです。チームの他のすべての開発者は、コードの内容をすぐには理解できません。だから大きなコメントを残すことを忘れないでください:) – Bazinga
私はあなたのポイントを理解することができます。個人的に私にとってはもっと自然な感じです。私は、読みやすさは、チームがどのように物事をするのに使われているかに関係していると思います。 '_'演算子を使って' 'zipIterable ''を使うと、もっと複雑になるかもしれません。 – Meir