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
| Parameter | Type | Description |
|---|---|---|
name | string | 锁名称,相同名称的实例竞争同一个 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
| Parameter | Type | Description |
|---|---|---|
callback | (isLeader) => void | 成为 leader 时回调,参数为 true |
Returns
取消订阅函数
(): boolean;
Returns
boolean