【发布时间】:2017-01-23 19:12:33
【问题描述】:
我创建了一个 Observable 来缓存他们的结果一段时间。这个例子很棒而且非常有用!但我无法为项目生产者设置超时。我试图在mockDataFetch() 中使用超时运算符,但在第一个失败的项目之后,流无法恢复。
如何实现mockDataFetch 超时?
这正是我所做的:
const Observable = Rx.Observable;
var counter = 1;
var updateRequest = Observable.defer(() => mockDataFetch())
.publishReplay(1, 1000)
.refCount();
function mockDataFetch() {
return Observable.of(counter++)
.delay(Math.floor((Math.random() * 100) + 1))
.timeout(50);
}
function mockHttpCache() {
return updateRequest
.take(1);
}
另一方面,如果在mockDataFetch 中获得异常会发生什么?我希望在下一个项目上(1000 毫秒后,正如它在 publishReplay 方法中定义的那样),observable 会发出一个新项目。
【问题讨论】:
标签: javascript rxjs rxjs5