我取决于你是使用主题还是观察,但可能无法"自动"执行此操作.
我不认为你可以拥有"订阅的Observable"这样的东西,因为你要么存储一个Observable,要么订阅它:
const source = Observable.of(...)
.map(...);
const subscription = source
.subscribe();
Run Code Online (Sandbox Code Playgroud)
这里source代表一个Observable并 subscription代表一个订阅.
请注意,您可以拥有一个Subscription存储多个其他订阅的实例:
const subscriptions = new Subscription();
const sub1 = Observable...subscribe();
const sub2 = Observable...subscribe();
const sub3 = Observable...subscribe();
subscriptions.add(sub1).add(sub2).add(sub3);
// Then unsubscribe all of them with a single
subscriptions.unsubscribe();
Run Code Online (Sandbox Code Playgroud)
如果您正在使用主题,他们自己拥有该unsubscribe方法,请参阅https://github.com/ReactiveX/rxjs/blob/master/src/Subject.ts#L96.
但请注意,这会使主题"停止",有关详细信息,请参阅https://medium.com/@martin.sikora/rxjs-subjects-and-their-internal-state-7cfdee905156
小智 7
其中一种选项是结合使用 takeUntil 和Subject 来停止所有(Observable)订阅。
terminator$: Subject<boolean> = new Subject();
Observable.timer(1000)
.do(i => console.log(`timer 1: ${i}`))
.takeUntil(terminator$)
.subscribe();
Observable.timer(5000)
.do(i => console.log(`timer 2: ${i}`))
.takeUntil(terminator$)
.subscribe();
const stopSubscriptions = () => terminator$.next(true);
Run Code Online (Sandbox Code Playgroud)
是的 .observers如果您使用的Subject对象,只需调用属性rxjs。
希望这可以帮助。