无法获取axios请求的返回值,请各位帮忙看看
function getNewToken(token){
axios.get("someapi?token="+token).then(res =>{
if (res.data.h.code === 200){
let result = res.data;
console.log("获取结果",result); //在此得到了预期的结果
return result;
}
});
}
let new_token = getNewToken("abc");
console.log("new_token",new_token); //输出的结果是undefined
setTimeout(()=>{
console.log("new_token",new_token); //输出的结果仍然是undefined
},5000);
如上述问题,应该怎么解决?
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
异步请求里用
return
是没有啥用的,定义全局变量result
异想天开了,异步的函数不能够返回,但是你可以使用回调函数
// 调用
你还可以使用es6的
Promise
对象 一样的道理题主你的
getNewToken
函数没有返回值,自然 log 出来就是 undefined:当然如果你修改了:
这样只会得到一个 promise 的状态,并没有想要的答案。
你需要 handle promise,用好 promise,现有答案中 @小风哥 写的就是基本引用了。
axios本身就是基于promise的,你在一个then 中return 一个result后,只会让下一个then接收到这个,而并不是让这个方法返回result,通常的做法是提交commit()存在state中。
搞清楚什么是 异步 再来问