在带有Redux的ReactJS中避免竞争条件

问题描述 投票:0回答:1

我从社区中获得了一些关于如何在带有Redux的ReactJS中防止竞争条件的指导。

[假设两个人正在查看相同的记录,并且两个人都希望对其进行更改,那么应该采取什么样的行动流程?我不确定如何使用Google查询此查询,因此我决定要求社区为我指出正确的方向。

最初,我以为如果执行setState并将其保存到数据库中,它将在其他用户的眼中自动刷新(尽管我无法确认),否则我将如何锁定该项目以进行更改,以使其他用户无法操纵价值?

reactjs redux react-redux race-condition redux-thunk
1个回答
1
投票

您可以将websockets与react redux一起使用。如果user A正在查看记录,请向服务器发送一条消息以锁定记录。然后通过Websocket向当前正在查看该消息的其他订阅用户广播locked消息。用户收到locked Websocket消息后,请更新react / redux状态以显示适当的状态。

关于竞争条件,可能会发生这种情况,需要根据用例在服务器上进行处理。例如,如果user A的请求到达第一个,User B的请求到达第二个,并且如果您希望优先选择第一个用户,则锁定资源记录,但仅将访问权限设置为trueUser A停止编辑后,请解除锁定。

如果您想使websocket消息监视部分成为react组件之外的一个单独的问题,您可以查看redux中间件user A

© www.soinside.com 2019 - 2024. All rights reserved.