Последовательные запросы, зависящие от нескольких предыдущих запросов 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.

Другие вопросы по тегам