Vue将axios封装到外部JS文件 使用async/await调用返回undefined
问题原因
你封装的service/login.js中的goLogin方法缺少显式返回语句,async 函数无return时默认返回值为undefined,这是外层await调用拿到undefined的核心原因。
修复方案
提供两种修改方式,可根据编码习惯选择:
方式1:最小改动(保留原有.then/.catch写法)
直接返回整个axios请求链的结果即可,无需额外修改逻辑:
async goLogin(password){ // 仅需在axios调用前增加return关键字 return axios.post(appRoute+'user/login',{pwd:password}) .then(data=>{ var user = { token:data.data.results }; return user}) .catch(err=>{ return {errorMessage:err.message}}) }
方式2:统一async/await写法(更易读)
去掉.then/.catch,改用try/catch包裹异步逻辑,代码逻辑更清晰:
async goLogin(password){ try { const res = await axios.post(appRoute+'user/login',{pwd:password}) return { token: res.data.results } } catch (err) { return { errorMessage: err.message } } }
修改完成后,Vue页面中的调用逻辑无需调整,即可正常拿到result返回值。
内容的提问来源于stack exchange,提问作者jacklondon
相关产品推荐
相关产品推荐

