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

React中setInterval定期获取API数据始终返回旧值问题求助

解决fetch请求重复返回旧数据的问题

这是浏览器缓存GET请求导致的。你的请求URL固定,浏览器会默认缓存GET请求的响应,所以每次调用fetch时,其实并没有真正向服务器发起新请求,而是直接复用了之前缓存的结果,因此打印的始终是相同的数据。

两种有效解决办法:

  • 给URL添加唯一参数绕过缓存
    修改fetch的URL,在末尾拼接当前时间戳或随机数,让每次请求的URL都不一样:
getData = async () => {
  const fetchData = await fetch(`JSON-url?timestamp=${Date.now()}`);
  const resp = await fetchData.json();
  const timeStampData = resp.timestamp; // 这里无需await,resp.timestamp是普通属性,不是Promise

  console.log(timeStampData);
};
  • 通过请求头禁用缓存
    在fetch的配置中添加缓存控制的请求头,强制浏览器不使用缓存:
getData = async () => {
  const fetchData = await fetch("JSON-url", {
    headers: {
      'Cache-Control': 'no-cache, no-store, must-revalidate',
      'Pragma': 'no-cache',
      'Expires': '0'
    }
  });
  const resp = await fetchData.json();
  const timeStampData = resp.timestamp;

  console.log(timeStampData);
};

另外你尝试把const改成let的做法完全没用,变量声明方式和浏览器的请求缓存机制没有任何关联,这个方向不对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:09:45