Последовательные запросы, зависящие от нескольких предыдущих запросов refetchInterval
У меня есть поток опроса в приложении, который представляет собой последовательность запросов, выполняемых в зависимости от предыдущего до завершения. До тех пор, пока я не начал использовать response-query, я просто использовалasync/await
а также Promise.all()
чтобы узнать, завершены ли предыдущие запросы или нет.
пример потока (до использования response-query):
setInterval(async () => {
await Promise.all([query1, query2]);
await query3();
}, INTERVAL_TIME);
Благодаря этому у меня есть интервал опроса, который, как я знал, query3 будет запускаться только после того, как query1 && query2 завершится.
Теперь я изо всех сил пытаюсь получить такое поведение, используя react-query
. Я знаю оenabled
параметр, который можно передать useQuery
крючок, но он годится только для первого запуска:
const {data: data1} = useQuery('query1', query1, { refetchInterval: INTERVAL_TIME });
const {data: data2} = useQuery('query2', query2, { refetchInterval: INTERVAL_TIME });
const {data: data3} = useQuery('query3', query3, { refetchInterval: INTERVAL_TIME , enabled: !!data1 && !!data3})
Приведенный выше фрагмент дает мне результат: первый интервальный прогон в порядке, query3
работает только после того, как я data1
а также data2
но во втором интервальном прогоне, потому что data1
а также data2
уже не фальшивка, это просто параллельная отправка всех запросов, что не является желаемым результатом.
Вероятно, стоит упомянуть контекст вопроса и данные. data1
а также data2
не зависят друг от друга (могут выполняться параллельно), но должны быть получены до data3
потому как data3
отображается на основе параметров из data1
а также data2
Вы можете мне посоветовать? Спасибо.
0 ответов
Вы можете использовать "зависимые запросы", как описано здесь: https://react-query.tanstack.com/docs/guides/queries#dependent-queries
Это может помешать выполнению третьего запроса до тех пор, пока не станут доступны data1 и data2.