【发布时间】:2019-05-11 22:24:43
【问题描述】:
我创建了一个 Observable,它可能生成无限量的数据(例如一个计时器)。这些数据是通过一个主题访问的,因此多个观察者会收到相同的值。
如何阻止 Observable 生成新值? (不修改 Observable 的实现)
// custom Observable, to visualize internal behavior
const timer$ = new rxjs.Observable(subscriber => {
console.log("observable init");
var counter = 0;
const intervalId = setInterval(() => {
++counter;
console.log("observable %s",counter);
subscriber.next(counter);
}, 1000);
return () => {
console.log("observable teardown");
clearTimeout(intervalId);
}
});
// subscribe through a subject
const subject$ = new rxjs.Subject();
timer$.subscribe(subject$);
const subscription = subject$.subscribe(value => console.log("observer %s", value));
// cancel subscription
setTimeout(() => {
console.log("unsubscribe observer");
subscription.unsubscribe();
// TODO how to stop Observable generating new values?
}, 3000);
jsfiddle:https://jsfiddle.net/gy4tfd5w/
【问题讨论】:
标签: rxjs observable subject unsubscribe