跳到主要内容

LWWConflictResolver

Defined in: packages/rxdb/src/sync-contract/LWWConflictResolver.ts:21

Last-Write-Wins 冲突解决器

基于 createdAt 时间戳,更晚的变更胜出 这是默认的冲突解决策略

Example​

const resolver = new LWWConflictResolver();
const resolution = await resolver.resolve(conflict);

if (resolution.type === 'KEEP_LOCAL') {
// 使用本地变更
} else {
// 使用远程变更
}

Implements​

Constructors​

Constructor​

new LWWConflictResolver(): LWWConflictResolver;

Returns​

LWWConflictResolver

Methods​

resolve()​

resolve(conflict): Promise<ConflictResolution>;

Defined in: packages/rxdb/src/sync-contract/LWWConflictResolver.ts:35

解决单个冲突

比较本地和远程变更的 createdAt 时间戳,更晚的胜出。

时间戳相同时按 clientId 字典序决胜 —— 这是全局确定的:两个副本从各自视角 拿到的是同一对 clientId,因此独立解决后会收敛到同一份数据。 若固定「本地优先」,A 和 B 都会保留自己,永久分叉且每次同步都再冲突一次。 clientId 缺失或两侧相同时无从判别,退回本地优先。

Parameters​

ParameterTypeDescription
conflictConflict冲突信息

Returns​

Promise<ConflictResolution>

冲突解决结果

Implementation of​

ConflictResolver.resolve


resolveAll()​

resolveAll(conflicts): Promise<ConflictResolution[]>;

Defined in: packages/rxdb/src/sync-contract/LWWConflictResolver.ts:67

批量解决冲突

逐个调用 resolve() 方法

Parameters​

ParameterTypeDescription
conflictsConflict[]冲突列表

Returns​

Promise<ConflictResolution[]>

解决结果列表

Implementation of​

ConflictResolver.resolveAll