JavaScript async函数执行不全:await axios请求后后续代码未运行
可能原因及排查步骤
- 1、请求抛出错误进入catch分支
axios默认仅当HTTP响应状态码为2xx时才会判定请求成功,进入await后的后续逻辑;如果返回4xx/5xx状态码、跨域、网络异常,会直接抛出异常进入catch块。
你可以先修改catch块的日志代码,输出完整错误信息排查:
catch (error) { // 打印响应错误信息、状态码,无响应的话打印错误原因 console.log('错误详情:', error.response ? `${error.response.status} ${JSON.stringify(error.response.data)}` : error.message) }
常见这类错误的诱因:
路径参数
session?.id为undefined,导致请求路径错误触发404接口路径拼写错误,和后端注册的路由不匹配
后端参数校验不通过返回400错误
2、后端接口未返回响应
打开浏览器控制台的「网络」面板,查看/addwatchlist请求的状态,如果始终处于pending(转圈)状态,说明后端接口逻辑处理完后没有返回响应,比如Node.js后端接口漏写了res.send()/res.json()这类返回语句,请求会一直挂起,await会持续等待不会触发后续代码。
参考函数对应的addcointowatchlist接口可以正常执行,大概率是addwatchlist后端接口单独存在未返回响应的问题,优先检查该接口的后端逻辑。3、传参格式异常
第一个接口传递的是嵌套结构coins: {coin: {coinID: coinID}},如果后端没有配置对应的嵌套参数解析规则(比如express的body-parser未开extended: true),会导致后端拿不到参数,逻辑卡住或抛出错误未返回。可以先在发请求前打印watchlistName、coinID确认参数是有效值,再对比后端要求的传参格式是否匹配。
内容的提问来源于stack exchange,提问作者Eric Pezzulo
相关产品推荐
相关产品推荐

