gpt4 book ai didi

javascript - Redux 如何保证没有竞争条件?

转载 作者:行者123 更新时间:2023-11-29 10:07:16 25 4
gpt4 key购买 nike

我最近学习了 Redux。
我很理解这个概念,但我没有弄清楚 official documentation 中的这一行:

Because all changes are centralized and happen one by one in a strict order, there are no subtle race conditions to watch out for.

Redux 如何保证没有微妙的竞争条件?

确实,我可以想象这个场景(按顺序):

  1. 一些组件调度 ACTION_TYPE_1。
  2. 一些组件调度 ACTION_TYPE_2。
  3. ACTION_CREATOR_1 调用 ajax 来获取一些数据。
  4. ACTION_CREATOR_2 调用 ajax 来获取一些数据。
  5. ACTION_CREATOR_2 在 ACTION_CREATOR_1 之前处理抓取的数据。
  6. 由于这种竞争条件可能会出现奇怪的行为?

因此, Action 创建者分派(dispatch)的操作会按顺序应用,但这些 Action 创建者的实现可能不会按顺序应用,这可能会导致代码不确定。

如何计算报价?

我可以理解,对于 Redux,有一种关于调度 Action 历史的trace(有助于理解运行时的程序工作流程),但是这些 Action 的真正实现呢?

最佳答案

我刚遇到 this point ,非常有意义,作者是@DanAbramov 本人。

我认为它很好地回答了我的 OP。

关键是只要 Action 的调度保持同步(尽管 Action 创建者的内部过程可能根本不同步),就很容易快速找出竞争条件(或其他关于非确定性的问题)通过建立和记录 dispatch 行动的历史。
特别是很容易重现“怪异”状态,然后找出如何避免它(如 Event-Sourcing )。

如果没有任何同步可见的时间点,就很难掌握发生了什么;这就是 Redux 带来好处的原因。

Redux 不会避免竞争条件,但确实会大大减少微妙(难以分析)的竞争条件,如文档所述。

关于javascript - Redux 如何保证没有竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41081849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com