2011-10-16 5 views
0
function near_home(lat,long,miles) { 
    var url = "api_url"; 
    var places = []; 

    $.getJSON(url, function(data) { 
    $.each(data['results'], function(i, place) { 
     places.push(place); 
    }); 
    console.log(places); 
    }); 
    console.log(places); 
    return places; 
} 

따라서 첫 번째 console.log()는 원하는 객체를 반환합니다. 그러나 두 번째 콘솔 방법은 null 데이터를 생성합니다. 나는이 문제를 몇 번 이상 다시 쓰고이 광기에 대한 이유를 찾을 수없는 것처럼 보입니다. 내가 뭘 놓치고 있니?getJSON 배열을 통과시키지 못함

답변

2

AJAX 요청은 비동기입니다. 콜백에서 다음 코드를 모두 실행해야합니다. 기능 사용시

function near_home(lat,long,miles,cb) { 
    var url = "api_url"; 
    var places = []; 

    $.getJSON(url, function(data) { 
     $.each(data.results, function(i, place) { 
      places.push(place); 
     }); 
     cb(places); 
    }); 
} 

이와 같이 호출 :

가능한 해결책이 될

near_home(lat, long, miles, function(places) { 
    // your code using the returned array 
}); 
0

대한 제 2 봉입 된되지 않도록 getJSON() 방법은 비동기 console.log-statement.