假设我有一个数组项目
我知道我可以使用
从这个数组中创建一个observableRx.Observable.fromArray(items)
如何从中创建一个懒惰的无限重复的观察者(即:只要他们被请求就重复这些项目)?
尝试
Rx.Observable.fromArray(items).repeat()
但这并不是懒惰地执行,因此会锁定浏览器。
答案 0 :(得分:0)
你不能用Observable做到这一点。你想看看使用Enumerable。
Reactive Extensions的Enumerable风格被称为Interective Extensions。
答案 1 :(得分:0)
我仍然是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中注入取消订阅或其他机制?