Последовательные запросы, зависящие от нескольких предыдущих запросов refetchInterval - PullRequest
0 голосов
/ 04 августа 2020

У меня есть поток опроса в приложении, который представляет собой последовательность запросов, выполняемых в зависимости от предыдущего до 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

Вы можете мне посоветовать? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...