TanStackT
TanStack14mo ago
4 replies
thick-teal

Wait for multiple queries to succeed

I'm looking for a way to wait for all queries to have the success status, is there some build in equivalent like this example below?

export const combineQueries = <T extends Record<string, UseQueryResult>>(queries: T) => {
  if (Object.values(queries).every((query) => query.status === 'success')) {
    return { status: 'success', queries };
  }

  if (Object.values(queries).some((query) => query.status === 'error')) {
    return { status: 'error', queries };
  }

  return { status: 'pending', queries };
};


  const teamsFind = useTeamsFind({ id: teamId });
  const teamUsersPaginate = useTeamUsersPaginate({ teamId });

  const query = combineQueries({
    team: teamsFind,
    users: teamUsersPaginate,
  });

  return match(query)
    .with({ status: 'pending' }, () => null)
    .with({ status: 'error' }, () => null)
    .with({ status: 'success' }, ({ queries: { team, users } }) => (
      // ...
    })
    .exaustive();
Was this page helpful?