You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TanStack Query处理创建任务、轮询及结果获取工作流的方案问询

React Query 任务工作流实现方案探讨

先明确useQuery与useMutation的核心适用场景:

  • 读取数据:使用useQuery
  • 创建/更新/删除数据:使用useMutation

针对创建任务→轮询任务状态→获取任务结果这类包含三个独立接口的工作流,有没有更合适的实现方案?

使用useQuery的痛点

用useQuery处理这类场景十分棘手,主要问题包括:

  • 需要额外的mutationFn来启动任务流程
  • 要为轮询状态、获取结果分别设置独立的useQuery钩子
  • 得依赖状态变量来启用/禁用各个钩子
  • 需要额外代码和钩子同步更新应用内的数据
  • 唯一优势是useQuery内置的refetch和retry功能

使用useMutation的优劣

用useMutation处理会稍好一些:

  • 可以把所有逻辑整合到同一个mutationFn中
  • 但需要手动编写轮询和重试逻辑

有没有开发者有更优的处理方法?

以下是当前的实现思路:

mutationFn: async () => {
  const data = await startTask();
  let status = await getStatus(data);

  // 这里需要手动添加重试逻辑
  while (status === "processing") {
    await sleep(1000);
    status = await getStatus(data);
  }
  const results = await getResults(data);
  return results;
}

内容的提问来源于stack exchange,提问作者Shakur Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:17:33