Observable

Observable

Observable类是Observable模式的简单实现。不过有一点特殊性:给定的可观察对象可以使用特定的掩码值通知其观察者,只有使用该掩码值注册的观察者才会收到通知。这可以实现更细粒度的执行,而不必依赖多个不同的可观察对象。例如,您可能有一个具有四种不同类型通知的给定可观察对象:移动(掩码=0x01)、停止(掩码=0x02)、右转(掩码=0X04)、左转(掩码=0X08)。给定的观察者可以仅使用移动和停止(mask=0x03)注册自身,然后仅当这两种情况中的一种发生时才会收到通知,并且永远不会向左转/右转。

Members

Methods

constructor(onObserverAdded)

创建新的可观察对象

add(callback,eventState,mask,insertFirst,scope,unregisterOnFirstCall) → Nullable<Observer<T>>

使用指定的回调创建新的观察者
Name Type Description
callback (eventData: T 将为该观察者执行的回调
mask number optional用于筛选观察者的掩码
insertFirst boolean optional如果为true,则回调将插入第一个位置,因此在其他位置之前执行。如果为false(默认行为),则回调将插入最后一个位置,在所有其他位置都已存在之后执行。
scope any optional要从中调用回调的可选范围
unregisterOnFirstCall boolean optional下一次通知后是否要注销观察者

addOnce(callback,eventState) → Nullable<Observer<T>>

使用指定的回调创建新的观察者,并在下一次通知后注销
Name Type Description
callback (eventData: T 将为该观察者执行的回调

remove(observer) → boolean

从可观察对象中移除观察者
Name Type Description
observer Nullable<Observer<T>> 要删除的观察者的实例

removeCallback(callback,eventState,scope) → boolean

从可观察对象中移除回调
Name Type Description
callback (eventData: T 要删除的回调
scope any optional可选作用域。如果使用,则仅删除具有此作用域的回调

makeObserverTopPriority(observer)

将可观察对象移动到观察者列表的顶部,使其在收到通知时首先被调用
Name Type Description
observer Observer<T> 要移动的观察者

makeObserverBottomPriority(observer)

将可观察对象移动到观察者列表的底部,使其在收到通知时最后被调用
Name Type Description
observer Observer<T> 要移动的观察者

notifyObservers(eventData,mask,target,currentTarget) → boolean

通过使用给定数据调用各自的回调来通知所有观察者如果执行了所有观察者,则返回true;如果观察者将SkipNextObserver设置为true,则返回false,然后阻止后续观察者执行
Name Type Description
eventData T 要发送给所有观察者的数据
mask number optional当前通知的掩码(具有不兼容掩码(即mask&observer.mask==0)的观察者将不会被通知)
target any optional状态的原始目标
currentTarget any optional状态的当前目标

notifyObserversWithPromise(eventData,mask,target,currentTarget) → Promise<T>

调用它将执行每个回调,期望它是一个承诺或返回一个值。如果在链中的任何一点上,一个函数失败,承诺将失败,执行将无法继续。当需要一系列事件(有时是异步事件)来初始化某个对象时,这非常有用所有回调都将被执行,这一点至关重要。回调的顺序保持不变,回调不会并行执行。
Name Type Description
eventData T 要发送到每个回调的数据
mask number optional用于过滤默认为-1的观察者
target any optional回调目标(请参阅EventState)
currentTarget any optional在冒泡阶段 当前对象

notifyObserver(observer,eventData,mask)

通知特定的观察者
Name Type Description
observer Observer<T> 要通知的观察者
eventData T 要发送到每个回调的数据
mask number optional用于过滤默认为-1的观察者

hasObservers() → boolean

获取一个布尔值,指示可观察对象是否至少有一个观察者@returnss true表示可观察对象至少注册了一个观察者

clear()

清除观察者名单

clone() → Observable<T>

克隆当前的可观察对象@returns 返回一个新的可观察值

hasSpecificMask(mask) → boolean

这个可观察对象是否处理注册了给定掩码的观察者
Name Type Description
mask number optional要测试的掩码