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
退订!
到处可见的Subscriber
,Subscriber
是一个庞大的家族
- InnerSubscriber
- CombineLatestSubscriber
- ConnectableSubscriber
- AjaxSubscriber
- ForkJoinSubscriber
- RaceSubscriber ...