最近在开发中要加一个悲观锁的功能,具体需求是:用户1和用户2不能同时打开一个模型进行编辑,用户1优先进入模型后,要对该模型进行上锁,关闭该模型或刷新页面时要进行解锁,此时在刷新页面时出现了问题。
刷新页面时解锁的接口被浏览器cancel掉了,导致刷新了页面,系统回到了首页,编辑模型页其实已经自动退出了,但解锁接口cancel掉以后无法解锁,导致该模型一直处于占用状态,如图所示:
Chrome浏览器会取消请求的几种场景:
- 触发请求的DOM元素被删除了(比如img元素还没有加载完就被删除了)
- 做了一些不必要的数据加载(比如开始加载iframe后改变其src或重写其内容)
- 大量的请求指向