首页新闻找找看学习计划

JS代码变量返回空

0
悬赏园豆:5 [已解决问题] 解决于 2019-01-16 21:01
export function getTotalProcData(vm){
    var totalData = ""
    vm.$http.get('/monitor_api'+'/total_process_info')
    .then(function(response) { 
        console.log(response.data)
        totalData = response.data
        
    })
    .catch(function(response) {
        console.log(response)
    })  
    
    return totalData
}

http请求确认是通的,为何这里返回totalData是空的呢?
是否then函数不是闭包呢?

langren919的主页 langren919 | 初学一级 | 园豆:194
提问于:2019-01-15 21:34
< >
分享
最佳答案
0

ajax默认是异步请求, 你的totalData是在vm.$http.get里面赋值的,代码在实际运行的过程中,执行到get请求的时候,不会等get执行完毕,它会继续往下执行,也就是return totalData ,这个时候你的totalData肯定没有值,所以返回为空了。
如果你需要在数据请求之后拿到一个结果再return,那么你必须使用同步请求。
如何改成同步请求你可以在网上get一下。这里有个参考,使用axios 实现同步机制 https://segmentfault.com/q/1010000015962729

收获园豆:5
默卿 | 老鸟四级 |园豆:4156 | 2019-01-15 22:45
其他回答(1)
0

http请求是异步的,可以看做是这一段代码隔了一定时间才执行,而return语句是立即执行的,此时变量还是空值。

逐影 | 园豆:998 (小虾三级) | 2019-01-15 22:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册