配列アイテムがあるとしましょう
を使用して、この配列からオブザーバブルを作成できることを知っています
Rx.Observable.fromArray(items)
これから怠惰に無限に繰り返すオブザーバブルを作成するにはどうすればよいですか (つまり、要求されている限りアイテムを繰り返します)?
試した
Rx.Observable.fromArray(items).repeat()
しかし、これは遅延して実行されないため、ブラウザがロックされます。
配列アイテムがあるとしましょう
を使用して、この配列からオブザーバブルを作成できることを知っています
Rx.Observable.fromArray(items)
これから怠惰に無限に繰り返すオブザーバブルを作成するにはどうすればよいですか (つまり、要求されている限りアイテムを繰り返します)?
試した
Rx.Observable.fromArray(items).repeat()
しかし、これは遅延して実行されないため、ブラウザがロックされます。
Observable でこれを行うことはできません。あなたはEnumerableを使って見たいと思っています。
Reactive Extensions の Enumerable フレーバーは Interective Extensions として知られています。
私はまだRxJSの初心者なので、おそらく私が提案しているのは完全な狂気ですが、次のような方法でこれを行うことができますか?
var items = [1, 2, 3, 4, 5];
var infiniteSource = Rx.Observable.from(items)
.map(function (x) { return Rx.Observable.return(x).delay(1000); })
.concatAll()
.doWhile(function(_) { return true; /* i.e. never end */ });
infiniteSource.subscribe(function(x) { console.log(x); });
ここに例があります: http://ctrlplusb.jsbin.com/sihewo/edit?js,console
コンソールがあふれないように、遅延がそこに入れられます。「部分が不要になるまで」に関しては、おそらく購読解除または他のメカニズムを doWhile に注入できますか?