rxjs-Subscriber全能宠儿,灵活操控一切的上帝之手。

Subscriber全能宠儿,灵活操控一切的上帝之手。

Observable - 可观察的

Subscriber - 订户,预约者,签署者

实现 Observer 接口并且继承 Subscription 类。集观察者(实现Observer订阅上游数据),生产者(属性destination提供上游控制权)。是可以灵活操控一切的上帝之手。

class Subscriber<T> extends Subscription implements Observer<T>{
    protected destination: PartialObserver<any>;
}
复制代码

先看一下Observer,翻译观察者

export interface Observer<T> {
  closed?: boolean;
  next: (value: T) => void;
  error: (err: any) => void;
  complete: () => void;
}
复制代码

Observer实现了三个方法next观察数据,error观察错误,complete观察完成,由此可知Subscriber是一个数据源观察者。

Subscription

订阅实例,提供退订操作。

在看下Subscription, 实现SubscriptionLike接口

class Subscription implements SubscriptionLike {}
复制代码

看下SubscriptionLike接口的定义,继承自Unsubscribable,拥有unsubscribe退订方法,closed标志是否退订!

export interface Unsubscribable {
  unsubscribe(): void;
}
export interface SubscriptionLike extends Unsubscribable {
  unsubscribe(): void;
  readonly closed: boolean;
}
复制代码

add通过参TeardownLogic构造一个新的Subscription,并保存到_subscriptions,当执行unsubscribe时依次遍历_subscriptions执行unsubscribe

add(teardown: TeardownLogic): Subscription;
复制代码

remove_subscriptions移除指定subscription

remove(subscription: Subscription): void;
复制代码

Subscriber

static create新建Subscriber

static create<T>(
    next?: (x?: T) => void,
    error?: (e?: any) => void,
    complete?: () => void
): Subscriber<T>;
复制代码

next, error,complete三个函数分别调用内部方法_next,_error,complete,这里是对三个方法的业务抽离,如需新功能可覆盖这三个方法来达到目的!,unsubscribe退订!

到处可见的SubscriberSubscriber是一个庞大的家族

  • InnerSubscriber
  • CombineLatestSubscriber
  • ConnectableSubscriber
  • AjaxSubscriber
  • ForkJoinSubscriber
  • RaceSubscriber ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值