2014-07-16 87 views
0

我需要從getNearRoutes函數返回變量結果。在routes函數內部,數組結果具有所有正確的元素,但是當函數結束時,數組結果爲空。我知道這是一個範圍問題,但我一直無法解決它,任何幫助表示讚賞。來自嵌套函數的返回值(Javascript)

在此先感謝。

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

謝謝你,我沒有找到那個帖子的時候我張貼的問題。這非常有用。 –

回答

1

由於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! 
}); 
+0

謝謝,我不知道,我還有很多東西要學。比你。 –