Web Locks API 能怎样协调多个标签页?
用 Web Locks 在同源页面之间协调独占资源,理解等待、超时、丢失页面和不可靠锁持有者的边界。
参考答案
Web Locks 允许同源上下文请求一个命名锁,独占锁可以让多个标签页轮流执行迁移、刷新令牌或写入共享数据等任务。锁回调返回或 Promise 完成后,锁才会释放。
锁只协调当前浏览器中的参与者,不是服务端分布式锁,也不能保证崩溃前的业务操作已经完成。持锁代码要短,避免在锁内等待不必要的网络或用户交互;可以使用 ifAvailable 或诊断接口观察是否有锁被占用。
即使有锁,业务操作也要幂等并处理页面关闭、网络失败和版本升级。锁名应按资源定义,不能把所有操作都放进一个全局锁造成无谓串行。