isCrossTabEvent()
function isCrossTabEvent(event): boolean;
Defined in: packages/rxdb/src/rxdb-events.ts:722
判定事件是否来自其他 tab。
Parameters
| Parameter | Type | Description |
|---|---|---|
event | RxDBEvent | 待判定的事件 |
Returns
boolean
事件携带 origin: 'cross-tab' 标记的实体时为 true
Remarks
标记由网关的 #markEventAsCrossTab 写在实体上,会随事件对象一起穿过宿主的事务队列 ——
而网关内的 #processingRemoteEvent 只是派发那一瞬间的标志。事务期间收到的远端事件要等
COMMIT 才重放监听器,那一刻标志早已复位,事件自身的标记是识别来源的唯一线索。
两个消费方:
- 网关:跨 tab 事件不再二次广播,防回声成环;
- RxDB 的事务回滚:只丢弃本地事件,他 tab 已提交的变更照常派发。