React中Axios请求函数RuoloOnline返回undefined问题求助
问题原因
你的RuoloOnline函数没有返回axios发起的异步请求Promise,函数内部then回调里的return只是回调函数的返回值,并不会成为整个RuoloOnline函数的返回值。而没有显式return的函数默认返回undefined,这就是外部调用时拿到undefined的核心原因。
修复方案
方案1:直接返回axios请求的Promise
修改函数,让它返回axios.get的结果(本身就是Promise),外部就能通过Promise链式调用获取返回值:
export const RuoloOnline = (jwt) => { return axios.get("http://localhost:1337/api/users/me", { headers: { "Authorization": `Bearer ${jwt}` } } ).then((res) => { return res.data.ruolo }).catch(() => { return 0 }) }
方案2:用async/await语法(更易读)
换成async函数,用await等待请求结果,逻辑更直观:
export const RuoloOnline = async (jwt) => { try { const res = await axios.get("http://localhost:1337/api/users/me", { headers: { "Authorization": `Bearer ${jwt}` } } ) return res.data.ruolo } catch (err) { return 0 } }
正确调用方式
不管用哪种方案,外部调用都要处理异步逻辑:
- 链式调用方式:
RuoloOnline(yourJwtToken).then(ruolo => { console.log(ruolo) // 这里能拿到正确值 })
- async函数内用await:
async function getRuolo() { const ruolo = await RuoloOnline(yourJwtToken) console.log(ruolo) } getRuolo()
内容的提问来源于stack exchange,提问作者oneafter909
相关产品推荐
相关产品推荐

