【问题标题】:Angular RxJS: Do something when an observable is subscribed or unsubscribed [duplicate]Angular RxJS:当订阅或取消订阅可观察对象时做一些事情[重复]
【发布时间】:2017-12-08 10:46:59
【问题描述】:

我在Angular 应用程序(Ionic 框架)中使用RxJS 将一些Javascript 事件转换为Observables。我想在“客户端”调用 .subscribe() 时开始监听事件,并在他调用 .unsubscribe() 时停止监听它们。我查看了 Observable 类的文档,但不知道该怎么做。

所以,假设有“onSubscribe”和“onUnsubscribe”方法,我想做这样的事情:

import { Observable, Subject } from 'rxjs';

...

on(name: string) : Observable<Event> {
    let observable = new Subject<any>();

    observable.onSubscribe(() => {
         this.addEventListener(name, (event) => {
             observable.next(event);
         });
    });

    observable.onUnsubscribe(() => {
        this.removeEventListener(name);
    });

    return observable;
}

有什么办法可以做到吗?

谢谢!

【问题讨论】:

  • 你需要扩展 Observable 类。

标签: javascript angular ionic-framework rxjs observable


【解决方案1】:

import { Observable, Subject } from 'rxjs';

...

const unsubscribe;

on(name: string) : Observable<Event> {
    let observable = new Subject<any>();
    // subscribe method returns unsubscribe function, so you have to save in some varibale then call it.
    this.unsubscribe = observable.subscribe(() => {
         this.addEventListener(name, (event) => {
             observable.next(event);
         });
    });

    return observable;
}

// some where else you can do this
unsubscribe();

【讨论】:

    猜你喜欢
    • 2018-01-19
    • 2018-07-28
    • 1970-01-01
    • 2021-06-14
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2022-01-23
    相关资源
    最近更新 更多