我有一些资源的操作、 reducer 和服务。
假设在本例中资源是一个购物车,用户可以从中拥有多个。
我有以下方法,getCartInformation
, getCarts
, getCartCount
。
我有以下 API,fetchCartInformation
, fetchCarts
, fetchCartCount
.
getCarts
返回 getCartInformation
所需的购物车 ID和getCartCount
问题是,你会怎样做才能避免出现多个 fetchCarts
每当您调用 getCartInformation
时都会调用 API或getCartCount
作为副作用
- 您可以使用
fromCache
来扩展 API 库吗?标志,这样fetch***
有这个选项可用。 - 您会在“查询端点时调用”的 API 库上设置一个计数器,然后重新触发函数的调用者吗?
- 您能否添加对操作的检查以查看是否
getState
已经有购物车,如果没有查询并重新触发该功能(对于慢速端点,可能同时有 2 个或更多并发调用)?
现在让我们假设多个组件可能会触发 getCartCount
调用,有时您想在组件出现在页面中时调用端点,有时它们都会在应用程序的初始化中被调用,因为组件都被添加了。在这种情况下,这将调用端点 getCarts
和getCartCount
好几次了。
- 是否有某种“redux-way”来捕获一个方法在解析之前被多次调用?
- 您可以在
getCarts
上设置一个调用计数器吗?行动? - 您会采取行动吗
getCartCount
取决于getCarts
promise 回复,并检查getCarts
行动?
我知道这是一个有点复杂和冗长的问题,但如果需要更多或更少的细节,请告诉我。
最佳答案
我不明白为什么每次调用
getCartInformation
时都应该调用getCarts
。常见用例是:(1) 用户查看卡列表(通过 getCards)和 (2) 用户单击其中一张卡并查看卡信息(通过 getCartInformation 和所选卡的 ID)。看来您不需要再调用一次 getCards 了。通常将卡片列表分为页面。因此,在每次调用 getCards 时,您始终将
start
、offset
、total
字段作为服务字段,因此您不必根本需要getCartsCount
。当我应用任何类型的缓存时,使其对 Redux 透明是合理的,即 Redux 操作以通常的方式执行 API 调用,API 层决定(在后台)是否应该发送真正的 ajax调用还是应该从缓存返回数据。
关于javascript - Redux API 并发操作的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60110899/