从嵌套函数返回值(Javascript)

时间:2014-07-16 17:58:57

标签: javascript function return

我需要从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;
}

1 个答案:

答案 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!
});