当前位置: 首页 > 知识库问答 >
问题:

如何使用Flux管理异步存储操作?

孟高峰
2023-03-14

在Facebook关于Flux架构的演讲中,Jing在12:17提到dispatcher强制要求,在当前操作被商店完全处理之前,不能调度任何操作。

这里的调度员是执行没有级联效应的主要部分;一旦一个操作进入商店,在商店完全处理完它之前,您不能再放入另一个操作。

那么,我的问题是,如何正确地处理可能从存储区中删除的长时间运行的异步操作(例如,Ajax请求,或处理其他外部异步API)--任何阻止完成操作分派的操作(例如,等待用Ajax请求的结果解析promise)都可能阻止来自用户的UI生成的操作被分派。

共有1个答案

汲永嘉
2023-03-14

根据我的理解,依赖Ajax等的异步操作不应该阻止将操作发送到所有订阅服务器。

对于用户操作,您将有一个单独的操作,比如TodoMVC示例中的TODO_UPDATE_TEXT,还有一个在服务器返回时调用的操作,比如TODO_UPDATE_TEXT_COMMETE(或者只是一些更通用的操作,比如TODO_UPDATE_COMMETE,它包含最新属性的新副本)。

如果您希望执行乐观更新以立即向用户显示更改的效果,您可以立即响应用户操作更新存储区(然后在服务器返回权威数据时再更新一次)。如果您想在服务器上等待,您可以让存储区只更新自身以响应服务器触发的操作。

 类似资料:
  • 问题内容: 我正在用React Native构建一个应用程序。我想尽量减少与数据库通信的频率,因此我大量使用了AsyncStorage。虽然在DB和AsyncStorage之间的转换中存在很多错误的余地。因此,我想通过对它运行自动化测试来确保AsyncStorage拥有我相信的数据。令人惊讶的是,我还没有找到有关如何在线进行操作的任何信息。我自己尝试做的尝试还没有完成。 使用笑话: 此方法失败,并

  • 我正在阅读关于Flux的文章,但是Todo应用程序的例子太简单了,我无法理解其中的一些关键点。 想象一下,像Facebook这样的单页应用程序拥有用户配置文件页面。在每个用户配置文件页,我们想显示一些用户信息和他们的最后一个帖子,无限滚动。我们可以从一个用户配置文件导航到另一个用户配置文件。 在Flux架构中,这将如何对应于存储和调度器? 我们是为每个用户使用一个,还是使用某种全局存储?那么dis

  • 我正在使用angular async本地存储模块设置本地存储中令牌的到期时间。 然后,我有一个在用户登录时调用的函数,该函数检查令牌是否仍然有效: 这里的问题是localStorage.getItem()返回一个可观察的。所以当我们在可观察的上调用。订阅时,它被异步调用,这意味着我们不会阻塞,直到结果准备好,所以代码直接通过并执行返回res语句,此时res是未定义的,因为订阅箭头函数中的代码尚未执

  • 如果这被认为是一个可接受的实践,我需要什么-如果有-错误处理?我的理解是,task.wait()将重新抛出异步操作抛出的任何异常,并且我没有提供任何取消异步操作的机制。仅仅调用task.wait()就足够了吗?

  • 第二个存储区是。它的责任是管理随机选择的TODO项目。在我看来,应该使用通过访问TODO项。 问题在于,如前所述,在启动时不会加载TODO项。 问题是:“如何保证已经检索了TODO项?”