跳到主要内容

isCrossTabEvent()

function isCrossTabEvent(event): boolean;

Defined in: packages/rxdb/src/rxdb-events.ts:722

判定事件是否来自其他 tab。

Parameters​

ParameterTypeDescription
eventRxDBEvent待判定的事件

Returns​

boolean

事件携带 origin: 'cross-tab' 标记的实体时为 true

Remarks​

标记由网关的 #markEventAsCrossTab 写在实体上,会随事件对象一起穿过宿主的事务队列 —— 而网关内的 #processingRemoteEvent 只是派发那一瞬间的标志。事务期间收到的远端事件要等 COMMIT 才重放监听器,那一刻标志早已复位,事件自身的标记是识别来源的唯一线索。

两个消费方:

  • 网关:跨 tab 事件不再二次广播,防回声成环;
  • RxDB 的事务回滚:只丢弃本地事件,他 tab 已提交的变更照常派发。