
发布
如何在 Web 应用中使用 Google 的 Web Locks API 与 IndexedDB 协同管理跨标签页的数据一致性?
在线协作文档工具需防止多个浏览器标签页同时修改同一文档导致冲突。当前使用 localStorage
事件通知机制存在竞态条件。计划引入 Web Locks API(Chrome 86+)实现排他性访问控制。挑战包括:如何通过 navigator.locks.request('doc-123', {mode: 'exclusive'}, callback)
获取锁;在锁持有期间安全读写 IndexedDB 中的文档数据;处理锁请求超时(ifAvailable
模式)与降级策略;结合 BroadcastChannel
通知其他标签页锁状态变更;以及在 PWA 离线场景下保证锁机制仍有效。应如何构建浏览器端的跨标签页并发控制方案?