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

React中Axios Post请求偶发未完成,数据库字段不更新如何修复?

问题原因确认

你的猜测完全正确,问题出在then的回调写法上:你直接把history.push的执行结果传给了then,而不是把跳转逻辑封装成函数传入then,这就会导致请求刚发起、还没等后端响应就立刻执行了跳转,页面切换过程中未完成的异步请求会被浏览器主动取消,所以就出现了偶发的数据库更新不生效的问题。

修复方案

前端代码修复

把then里的跳转逻辑包装成回调函数,确保只有Axios请求拿到后端响应之后才执行跳转:

Axios.post(Addr_currentRound_addOne, { gameId: gameId })
  .then(() => {
    // 仅请求成功后再执行跳转
    history.push("/leiter_tunierplan/"+gameId);
  })
  .catch(err => {
    // 建议新增错误捕获逻辑,避免接口报错无感知
    console.error("更新轮次失败:", err);
  });

可选后端优化建议

可以给接口增加错误返回逻辑,方便前端感知请求失败的情况:

app.post("/currentRoundAddOne", (req, res) => {
  const gameId = req.body.gameId;
  db.query(
    "UPDATE tunierplan SET currentRound=currentRound+1 WHERE id=?;",
    [gameId],
    (err, result) => {
      if (err) {
        console.log(err);
        // 错误时返回500状态码
        res.status(500).send("更新失败");
      } else {
        res.send("Daten Übertragen");
      }
    }
  );
});

内容的提问来源于stack exchange,提问作者Pätsn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:30:00