老师你好,有个问题卡了我很久,想问一下你。
考虑一种情况,从Angular这边连续发送多条请求到后端。
数据如下:
{ id: 1, name: 'test01'} // 第一条请求的数据 req1
{ id: 2, name: 'test01'} // 第二条请求的数据 req2
{ id: 1, name: 'test02'} // 第三条请求的数据 req3
在后端进行保存的时候,name有唯一性约束,并且每条数据都有乐观锁(optimistic lock)
2)考虑第一和第三条请求(req1与req3)
数据在保存前会判断乐观锁。req1与req3为同一条数据的两条请求。如果在请求发送之前,id为1的数据乐观锁为1。在req1的数据进行保存之前,会先从数据库中拿到其乐观锁,然后set到当前数据的乐观锁。
然后保存req1的数据时,判断当前的乐观锁为1,为最新的数据,可以进行保存。
此时,同意地,在req1还在保存的过程中,req2到了。此时数据库里当前数据的乐观锁还是1。所以req2最终也会以乐观锁为1的状态进行保存。
与第一个问题相似,req1会成功,req2会失败。
针对这两种情况,如果希望angular这边在发送请求时做改进,有什么好的办法呢。这看起来不像是纯Angular的问题,但是我需要在前端angular这边做改动,考虑了很久也没有什么好的办法。
求助一下老师,谢谢了!