Flux调度员保证同步操作意味着什么?

时间:2015-02-19 15:06:02

标签: reactjs reactjs-flux

根据我构建的框架构建了一些使用(我相信)成为Flux架构的应用程序之后,我想知道它在什么时候意味着什么:

Mozilla说:

  

“调度员向感兴趣的商店发送行动。只有一个   任何时候都可以处理行动。“

或Facebook说:

  

“我们需要调度程序能够调用Store B的回调,   并完成该回调,然后继续使用商店A 。“

为什么我感到困惑是因为Javascript的并发模型只允许一次发生一件事,并确保当前操作的调用堆栈在继续使用任务队列之前耗尽。

因此,我们免费获得Facebook和Mozilla所说的调度员给我们的信息。我们无法避免它。我们为什么要这样说它有什么特别之处?

嗯......另一个考虑因素是你的“行动”是否与回调异步:

  1. 更新状态,
  2. 解雇XHR,
  3. 用结果更新状态。
  4. 在这里你的行动可以分为两部分,一些事情可能发生在2到3之间,从而违反了“一次一个动作”的原则。

    这个问题只能通过术语来解决:

    1. 将Action A定义为更新状态并发送XHR。
    2. XHR的结果触发更新状态的动作B.
    3. 毕竟,Facebook已经说过“行动也可能来自其他地方,例如服务器。”

      因此,在术语略有变化的情况下,除了向感兴趣的商店发送活动之外,我们不需要任何调度员。

      那我错过了什么?为什么Flux的调度员必须做更多的事情而不是发送?

1 个答案:

答案 0 :(得分:1)

我的回答是:撰写这些文档的人并不清楚他们在谈论什么。

即使是顶级stackoverflow React回答者和React贡献者也说:

  

根据我的理解,依赖于Ajax等的异步操作。   不应阻止将动作发送给所有订阅者

     

对用户操作有单独的操作,例如   TodoMVC示例中的TODO_UPDATE_TEXT 和一个被调用的时候   服务器返回,类似于TODO_UPDATE_TEXT_COMPLETED(或   也许只是像TODO_UPDATE_COMPLETED那样更通用的东西   包含最新属性的新副本。)

请参阅:https://stackoverflow.com/a/23637463/131227