У меня есть поток опроса в приложении, который представляет собой последовательность запросов, выполняемых в зависимости от предыдущего до fini sh. До тех пор, пока я не начал использовать response-query, я просто использовал async/await
и Promise.all()
, чтобы узнать, завершены ли предыдущие запросы или нет.
пример потока (до использования response-query):
setInterval(async () => {
await Promise.all([query1, query2]);
await query3();
}, INTERVAL_TIME);
Благодаря этому у меня есть интервал опроса, который, как я знал, query3 будет запускаться только после того, как query1 && query2 завершится sh.
Теперь я изо всех сил пытаюсь получить такое поведение, используя 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
Вы можете мне посоветовать? Спасибо.