涉及到网络通信, 你这已经是异步了
解决方案
要麽换成同步的写法
要麽使用最普通的callback写法
function getAllDeptData(){var str = "全院"
getDataByDept(str,function(data)
{
alert(data)
})
}
//获取json中的数据
function getDataByDept(obj,Callback){
var dataset = []
$.getJSON("tourism.json",function(data){
if((obj.indexOf("全院")==0 )&& ("全院".indexOf(obj) == 0)){
$.each(data.provinces,function(i,info){
var temp = {}
temp.name = info["name"]
temp.dept = info["dept"]
temp.value = info["value"]
dataset.push(temp)
})
Callback(dataset)
}else{
$.each(data.provinces,function(i,info){
if(info["dept"] == obj){
var temp = {}
temp.name = info["name"]
temp.dept = info["dept"]
temp.value = info["value"]
dataset.push(temp)
}
})
Callback(dataset)
}
})
}
有两个函数a和b
function a(){ return 1}function b(){ return a()}
这就是一个简单的获取,执行b()的时候,返回结果是1,即a()的返回值,但是显然上面这种写法没有多大的意义,在实际应用中,写的可能要复杂一些,同时也便捷一些。