跳到主要内容

LeaderElection

Defined in: @browser/leader-election.ts:28

基于 Web Locks API 的 Leader Election 实现 用于在多个浏览器 tab/window 之间选举唯一的 leader

Example

const leader = new LeaderElection('my-app');

const unsubscribe = leader.elect(isLeader => {
if (isLeader) {
console.log('当前 tab 成为 leader');
// 执行只有 leader 才能做的事情,如:
// - 与服务器建立 WebSocket 连接
// - 执行定时同步任务
}
});

// 同步检查是否为 leader
console.log(leader.isLeader);

// 取消订阅
unsubscribe();

// 页面关闭时自动释放,也可手动调用
leader.dispose();

Constructors

Constructor

new LeaderElection(name): LeaderElection;

Defined in: @browser/leader-election.ts:43

Parameters

ParameterTypeDescription
namestring锁名称,相同名称的实例竞争同一个 leader 位置

Returns

LeaderElection

Accessors

isLeader

Get Signature

get isLeader(): boolean;

Defined in: @browser/leader-election.ts:36

当前是否为 leader

Returns

boolean

Methods

dispose()

dispose(): void;

Defined in: @browser/leader-election.ts:72

释放 leader 身份并清理资源

Returns

void


elect()

elect(callback): () => boolean;

Defined in: @browser/leader-election.ts:52

参与 leader 选举

Parameters

ParameterTypeDescription
callback(isLeader) => void成为 leader 时回调,参数为 true

Returns

取消订阅函数

(): boolean;
Returns

boolean