我需要从 getNearRoutes 函数返回变量结果。在路由函数内部,数组结果具有所有正确的元素,但当函数结束时,数组结果为空。我知道这是一个范围问题,但我无法修复它,感谢任何帮助。
提前致谢。
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;
}
最佳答案
由于 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!
});
关于javascript - 嵌套函数的返回值 (Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24787600/