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

如何使用React + SWR轮询API持续查询AWS异步任务的处理状态?

实现方案

你要的效果直接通过SWR内置的refreshInterval动态配置就能实现,不需要额外写轮询逻辑。这个配置项支持传入函数,可根据当前接口返回的结果动态决定是否继续轮询:

  • 当任务状态为complete/failed/请求报错时返回0,停止轮询
  • 当任务处于加载中时返回你需要的轮询间隔(比如2000,即每2秒查询一次状态,可按需调整)

修改后的useSWR代码如下:

const { data: rawServiceData, error } = useSwr(
  serviceEndpoint,
  url => axios.get(url).then(r => r.data),
  {
    // 核心动态轮询配置
    refreshInterval: (data, error) => {
      // 出现错误、任务失败、任务完成时,停止轮询
      if (error || data?.type === 'complete' || data?.type === 'failed' || data?.type === 'error') {
        return 0
      }
      // 其他情况每2秒轮询一次
      return 2000
    },
    // 可选配置:页面切到后台时是否继续轮询,按需开启
    // refreshWhenHidden: true,
    onSuccess: data => {
      if (data.type === 'complete') {
        dispatch(
          setStatus({
            type: 'success',
            data: data.message,
            message: 'service has been successfully generated.',
            display: 'support-both',
          })
        );
        dispatch(setRawService(data.message));
      }
      if (data.type === 'loading') {
        dispatch(
          setStatus({
            type: 'success',
            data: data.message,
            message: 'service job is in progress.',
            display: 'support-both',
          })
        );
      }
      // 新增失败状态处理
      if (data.type === 'failed' || data.type === 'error') {
        dispatch(
          setStatus({
            type: 'error',
            data: data.message,
            message: `任务执行失败:${data.message}`,
            display: 'support-both',
          })
        );
      }
    },
    // 新增请求错误处理
    onError: (err) => {
      dispatch(
        setStatus({
          type: 'error',
          message: `查询任务状态失败:${err.message}`,
          display: 'support-both',
        })
      );
    }
  }
);

额外注意点

你提供的API代码里有个变量名笔误:声明的是const { jobStatus } = serviceResponse.serviceJob;,后续使用的是serviceJobStatus,会导致报错,建议修改为const { jobStatus: serviceJobStatus } = serviceResponse.serviceJob;即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:39:04