Web Locks通过字符串名称来标识和管理锁。同一名称的锁在整个浏览器中是全局的,无论由哪个标签页、iframe或Worker创建。不同名称的锁互相独立,互不影响。锁名称的命名空间由开发者自行管理,建议使用有意义的命名约定(如域名+资源路径)来避免命名冲突。
ifAvailable
Web Locks request()方法的选项之一。当设置为true时,如果锁当前不可用(已被其他浏览上下文持有),则立即返回false而非阻塞等待。这种模式适用于非关键的尝试性操作,避免阻塞当前页面的执行流程。ifAvailable不会放入锁的等待队列,获取失败后不影响后续的正常锁请求。
steal
Web Locks request()方法的选项之一。当设置为true时,如果锁已被其他浏览上下文持有,会立即终止当前持有者的锁回调并获取锁。被窃取的持有者会在其锁回调中收到AbortError。steal选项应仅在紧急情况下使用,因为强制转移锁可能导致数据不一致。steal不会影响锁的等待队列。
AbortSignal
Web API中用于取消异步操作的信号机制。在Web Locks中,可以将AbortSignal作为request()方法的signal选项传入,当调用AbortController的abort()方法时,锁请求会被取消并抛出AbortError。常用于实现锁获取的超时控制、用户主动取消锁请求等场景。
Web Locks API中用于查询当前锁状态的方法。返回一个Promise,解析为一个对象,包含held(当前被持有的锁列表)、pending(等待队列中的锁请求列表)等信息。每个锁条目包含name(锁名称)、mode(锁模式)、owner(持有者信息)、requests(等待队列)等字段。本工具定期调用此方法来更新锁状态监控面板。