例如,在下面的代码中,我如何更新react-query以等待上一个调用完成后再开始下一个调用?
我试图打一个API,有速率限制,一次一个调用,但我有一个列表,我需要做的调用,我得到一个429,如果一个以上的是在同一时间完成。
const [selection, setSelection] = React.useState([])
const results = useQueries(
selection.map(item => ({
queryKey: ['something', item]
queryFn: () => fetchItem(item)
})
)
const data = results.map(result => result.data)
2条答案
按热度按时间velaa5lx1#
我不知道有什么内置的解决方案。
但这个怎么样。对已运行的查询进行计数并启用下一个查询的状态。
您可能需要
staleTime: Infinity
来确保库不会同时重新获取所有查询。knsnq2tg2#
正如Anton建议的那样,React Query exposes a method调用了
enabled
。为了向您说明,使用普通方法循环遍历您的项,然后仅在上一个查询完成时调用RQ,然后切换enabled
状态。这是一个非常粗略的,更详细的例子,在这里运行replit。我还在replit中包含了如何重用该高速缓存,因此请让我知道它是否有意义。它肯定可以优化得更好,
setTimeout
只是为了直观地向您展示进度。在Anton的例子中,他使用了内置的
useQueries
,这是一种更好的方法。希望在这两个答案之间,你可以理解如何使用RQ,它是如何工作的,以及你可以用它做的很酷的事情。