译零 TransZero · TanStack Query 中文文档
主站

并行查询

更新于 2026-11-02 Svelte 查看英文原文 ↗

“并行”查询是指同时执行的查询,以最大化拉取并发性。

手动并行查询

当并行查询的数量固定不变时,使用并行查询无需额外工作。只需并排使用任意数量的 TanStack Query 的 createQuery 和 createInfiniteQuery 函数即可!

svelte
1<script lang="ts">2  import { createQuery } from '@tanstack/svelte-query'3  4  // The following queries will execute in parallel5  const usersQuery = createQuery(() => ({ queryKey: ['users'], queryFn: fetchUsers }))6  const teamsQuery = createQuery(() => ({ queryKey: ['teams'], queryFn: fetchTeams }))7  const projectsQuery = createQuery(() => ({ queryKey: ['projects'], queryFn: fetchProjects }))8  ...9</script>

使用 createQueries 动态执行并行查询

如果需要执行的查询数量会发生变化,则无法使用手动查询方式,因为这会破坏响应性。为此,TanStack Query 提供了 createQueries 函数,你可以用它动态地并行执行任意数量的查询。

createQueries 接收一个返回选项对象的访问器函数,该选项对象需包含一个 queries 键,其值为一个查询对象数组;它返回一个查询结果数组:

svelte
1<script lang="ts">2  import { createQueries } from '@tanstack/svelte-query'3 4  const { users }: { users: { id: string }[] } = $props()5  const userQueries = createQueries(() => ({6    queries: users.map((user) => {7      return {8        queryKey: ['user', user.id],9        queryFn: () => fetchUserById(user.id),10      }11    }),12  }))13</script>

在使用 TypeScript 时,若在传入 createQueries 的查询对象上内联编写 select,则该 select 的 data 参数无法从同一查询对象的 queryFn 中推断——此时将回退至 unknown。请显式标注 select 参数类型,或使用 queryOptions 辅助函数定义查询,以保持类型推断能力。参见 此已知限制。

本页为 TanStack Query 文档(Svelte 版)的非官方中文翻译,原文由上游团队维护,遵循 MIT 许可。 译文如有偏差,以英文原文为准。

译自上游 59d11de