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

axios轮询收到'done'后无法停止及执行下一步问题求助

解决axios轮询不停止且不执行下一步的问题

你的代码核心问题是没正确处理axios.get的异步特性,直接访问Promise对象的data属性永远拿不到后端返回的'done',导致判断条件永远不触发,轮询停不下来,nextStep也不会执行。

错误根源分析

原代码里var w = axios.get('/yet'),w是一个Promise实例,不是后端的响应结果。此时w.data要么不存在,要么不是你要的'done',所以if(w.data === 'done')永远为false,自然不会执行后续逻辑。

修正后的代码

const getDataFromServer = () => {
    const intervalId = setInterval(async () => {
        try {
            // 用await等待请求完成,拿到真实响应数据
            const response = await axios.get('/yet');
            if (response.data === 'done') {
                nextStep();
                // 清除定时器停止轮询
                clearInterval(intervalId);
            }
        } catch (error) {
            console.error('轮询请求出错:', error);
            // 可选:如果请求失败需要停止轮询,就打开下面的注释
            // clearInterval(intervalId);
        }
    }, 1000);
};

关键修改点

  • 给setInterval的回调函数加上async,这样内部可以用await等待axios请求完成
  • 用await获取axios的完整响应对象,再通过response.data拿到后端返回的值
  • 用const声明定时器ID(比var更安全,避免变量作用域问题)
  • 增加try/catch捕获请求错误,防止一次请求失败导致后续轮询异常(比如后端临时报错,不至于整个轮询逻辑挂掉)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:02:08