我需要从getNearRoutes函数返回变量结果。在routes函数内部,数组结果具有所有正确的元素,但是当函数结束时,数组结果为空。我知道这是一个范围问题,但我无法修复它,任何帮助都表示赞赏。
提前致谢。
getNearRoutes: function(lat, lng){
result = [];
var routes = $.getJSON("js/storage/routes.json", function(json) {
for(var i = 0; i < json.length; i++) {
var obj = json[i];
for( var j = 0; j < obj.points.length ; j++){
if (app.calculateDistance( obj.points[j].lat, obj.points[j].lng , lat , lng) < 0.05) {
result.push(obj);
break;
}
}
}
});
return result;
}
答案 0 :(得分:2)
由于getJSON
是异步的,因此您需要回调:
getNearRoutes: function(lat, lng, callback){
var result = [];
$.getJSON("js/storage/routes.json", function(json) {
for(var i = 0; i < json.length; i++) {
var obj = json[i];
for( var j = 0; j < obj.points.length ; j++){
if (app.calculateDistance( obj.points[j].lat, obj.points[j].lng , lat , lng) < 0.05) {
result.push(obj);
break;
}
}
}
callback(result);
});
}
然后使用函数:
getNearRoutes(lat, lng, function(result) {
console.log(result); //data is here!
});