根据我构建的框架构建了一些使用(我相信)成为Flux架构的应用程序之后,我想知道它在什么时候意味着什么:
Mozilla说:
“调度员向感兴趣的商店发送行动。只有一个 任何时候都可以处理行动。“
或Facebook说:
“我们需要调度程序能够调用Store B的回调, 并完成该回调,然后继续使用商店A 。“
为什么我感到困惑是因为Javascript的并发模型只允许一次发生一件事,并确保当前操作的调用堆栈在继续使用任务队列之前耗尽。
因此,我们免费获得Facebook和Mozilla所说的调度员给我们的信息。我们无法避免它。我们为什么要这样说它有什么特别之处?
嗯......另一个考虑因素是你的“行动”是否与回调异步:
在这里你的行动可以分为两部分,一些事情可能发生在2到3之间,从而违反了“一次一个动作”的原则。
这个问题只能通过术语来解决:
毕竟,Facebook已经说过“行动也可能来自其他地方,例如服务器。”
因此,在术语略有变化的情况下,除了向感兴趣的商店发送活动之外,我们不需要任何调度员。
那我错过了什么?为什么Flux的调度员必须做更多的事情而不是发送?
答案 0 :(得分:1)
我的回答是:撰写这些文档的人并不清楚他们在谈论什么。
即使是顶级stackoverflow React回答者和React贡献者也说:
根据我的理解,依赖于Ajax等的异步操作。 不应阻止将动作发送给所有订阅者。
您对用户操作有单独的操作,例如 TodoMVC示例中的TODO_UPDATE_TEXT 和一个被调用的时候 服务器返回,类似于TODO_UPDATE_TEXT_COMPLETED(或 也许只是像TODO_UPDATE_COMPLETED那样更通用的东西 包含最新属性的新副本。)