javascript - Redux API 并发操作的最佳实践

标签 javascript reactjs redux

我有一些资源的操作、 reducer 和服务。

假设在本例中资源是一个购物车,用户可以从中拥有多个。

我有以下方法,getCartInformation , getCarts , getCartCount 。 我有以下 API,fetchCartInformation , fetchCarts , fetchCartCount .

getCarts返回 getCartInformation 所需的购物车 ID和getCartCount

问题是,你会怎样做才能避免出现多个 fetchCarts每当您调用 getCartInformation 时都会调用 API或getCartCount作为副作用

  • 您可以使用 fromCache 来扩展 API 库吗?标志,这样 fetch***有这个选项可用。
  • 您会在“查询端点时调用”的 API 库上设置一个计数器,然后重新触发函数的调用者吗?
  • 您能否添加对操作的检查以查看是否 getState已经有购物车,如果没有查询并重新触发该功能(对于慢速端点,可能同时有 2 个或更多并发调用)?

现在让我们假设多个组件可能会触发 getCartCount调用,有时您想在组件出现在页面中时调用端点,有时它们都会在应用程序的初始化中被调用,因为组件都被添加了。在这种情况下,这将调用端点 getCartsgetCartCount好几次了。

  • 是否有某种“redux-way”来捕获一个方法在解析之前被多次调用?
  • 您可以在getCarts上设置一个调用计数器吗?行动?
  • 您会采取行动吗getCartCount取决于getCarts promise 回复,并检查 getCarts行动?

我知道这是一个有点复杂和冗长的问题,但如果需要更多或更少的细节,请告诉我。

最佳答案

  1. 我不明白为什么每次调用 getCartInformation 时都应该调用 getCarts。常见用例是:(1) 用户查看卡列表(通过 getCards)和 (2) 用户单击其中一张卡并查看卡信息(通过 getCartInformation 和所选卡的 ID)。看来您不需要再调用一次 getCards 了。

  2. 通常将卡片列表分为页面。因此,在每次调用 getCards 时,您始终将 startoffsettotal 字段作为服务字段,因此您不必根本需要 getCartsCount

  3. 当我应用任何类型的缓存时,使其对 Redux 透明是合理的,即 Redux 操作以通常的方式执行 API 调用,API 层决定(在后台)是否应该发送真正的 ajax调用还是应该从缓存返回数据。

关于javascript - Redux API 并发操作的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60110899/

相关文章:

javascript - Feathersjs API ES6 类钩子(Hook)和其余未定义

javascript - 在 React/TS 上调整窗口大小时调整图像大小、居中并保持纵横比

javascript - 如何导入 socket.io npm 包 - Node Js

javascript - 在 react 中渲染另一个表的行中的表

javascript - 如何在 React 中使网站主题在刷新时保持不变?

reactjs - 如何调试 React 加载项

json - 在平面列表中显示 JSON 数据

react-native - 使用 Redux 在 React Native 中获取 AsyncStorage 中的随机对象

vue.js - 如何在大型 SPA 中使用良好的 VueX 商店设计?

javascript - Uncaught TypeError : this. remove 不是 <anonymous>:12:14 的函数