根据结果重试react查询



我希望查询重试,直到达到预期结果。如何将条件传递到函数中以决定查询是否成功?

export async function waitUntilQuerySucceeds(
id: Id,
queryKey: QueryKey,
queryClient: QueryClient,
retryInterval = 500,
amountOfAttempts = 12,
) {
let attempts = 0
let results: [] | undefined = queryClient.getQueryData([queryKey, id])
while (attempts < amountOfAttempts) {
const result = results?.find(p => p.Id === id)
if (result) return true
attempts += 1
await queryClient.refetchQueries([queryKey, id])
await wait(retryInterval)
results = queryClient.getQueryData([queryKey, id])
}
return false
}
function wait(timeout: number) {
return new Promise(resolve => {
setTimeout(resolve, timeout)
})
}
export async function waitUntilQuerySucceeds(
id: Id,
queryKey: QueryKey,
queryClient: QueryClient,
retryInterval = 500,
amountOfAttempts = 12,
) {
let isDataFetched = false
let attempts = 0
let results: [] | undefined = queryClient.getQueryData([queryKey, id])
while (attempts < amountOfAttempts && !isDataFetched) {
const result = results?.find(p => p.Id === id)
if (result) isDataFetched = true;
attempts += 1
await queryClient.refetchQueries([queryKey, id])
await wait(retryInterval)
results = queryClient.getQueryData([queryKey, id])
}
return false
}
function wait(timeout: number) {
return new Promise(resolve => {
setTimeout(resolve, timeout)
})
}

最新更新