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函数不是闭包呢?
ajax默认是异步请求, 你的totalData是在vm.$http.get里面赋值的,代码在实际运行的过程中,执行到get请求的时候,不会等get执行完毕,它会继续往下执行,也就是return totalData ,这个时候你的totalData肯定没有值,所以返回为空了。
如果你需要在数据请求之后拿到一个结果再return,那么你必须使用同步请求。
如何改成同步请求你可以在网上get一下。这里有个参考,使用axios 实现同步机制 https://segmentfault.com/q/1010000015962729
http请求是异步的,可以看做是这一段代码隔了一定时间才执行,而return语句是立即执行的,此时变量还是空值。