2013-03-12 3 views
1

안녕하세요 저는 다음과 같습니다.비동기 함수에서 전역 변수 설정

var g = new Array() ; 

$.getJSON(google, function(data) { 
    var i = 0 ; 
    $.each(data.items, function() { 
    var obj = new res(i, this.title, this.snippet, this.formattedUrl, 0) ; 
    g.push(obj) ; 
    i=i+1 ; 
    }); 
}); 

비동기 함수 밖에서 배열에 액세스 할 수 있어야합니다.

+1

코드 형식을 지정하십시오 –

+1

비동기 함수 외부에서 배열을 사용하는 경우 올바른 상태인지 어떻게 알 수 있습니까? – Fenton

+0

'g'가'getJSON' 호출과 같은 범위에 있다면 익명의 함수는 클로저이고'g'에 대한 접근 권한을 가지고 있습니다. 동일한 범위에 있지 않은 경우 코드 구조에 대한 자세한 설명을 게시해야합니다. –

답변

3

엄밀히

가 글로벌 물건을 넣어 다음

window.App = {}; // or just App = {}; 

같은 앱 네임 스페이스를 만들고이 할 수있는 세계, 하나의 일반적인 방법을 설정하는 방법에 대한 부분이다 응답

App.g = [];

이제 어디서든 네임 스페이스에 액세스 할 수 있습니다.

아직 전역 변수를 수정하지 않은 요청이있는 경우를 알아야합니다.

+0

소원 나는 한 번 이상 투표 할 수 있습니다. 이것은 내가 가지고있는 문제를 수년간 해결해 준다. –

0

전역 변수보다 간단한 .data()을 사용할 수 있습니다. 어디

$('body').data('g', mydata); 

,이처럼 검색 :

작동하는 방법은이 같은 요소를 설정한다는 것이다 그것은 모든 요소에있을 수 있습니다 물론

$('body').data('g'); 

뿐만 아니라 body .