2012-06-18 8 views
0

범위 밖에있는 변수에서 작업하려면 jQuery 콜백이 필요한 상황이 있습니다. 내가 NUM은 콜백 함수 내에서 사용할 수 있도록하고 싶습니다jQuery 콜백에서 바깥 쪽 범위에 액세스하기

$('#myBtn').on('click', function(e) { 
    var num = 1; 

    // assume this returns the following: 
    // { success : true, num : 1 } 
    $.getJSON('/api/get_number', {}, function(response) { 
     if (response.success) { 
      // here, num is unknown unless I define it as a 
      // global variable 
      num += response.num ; 
     } 
    }); 

    console.log(num); // => want 2, get 1 
}); 

: 간단하게하기 위해, 다음 코드를 가정합니다. 전역 변수 (onclick 함수 밖에서 num을 선언 함)를 선언하지 않고이 작업을 수행하는 좋은 방법은 무엇입니까? 인수를 서버에서 전송하지 않고 인수로 전달할 수 있습니까? 감사.

+7

'num'이 성공적으로 업데이트되었지만 ** 이후 **는'console.log (num)'을 호출합니다. 문제는 범위에 관한 것이 아니라 Ajax는 ** 비동기 **입니다. 콜백 내에서'console.log (num)'을 움직이면 볼 수 있습니다. 이미 많은 관련 질문들이 많이 있습니다. –

답변

-1
$('#myBtn').on('click', function(e) { 
    var num = 1; 

    // assume this returns the following: 
    // { success : true, num : 1 } 
    $.getJSON('/api/get_number', {}, function(response) { 
     // get responce 
     if (response.success) { 
      // here, num is unknown unless I define it as a 
      // global variable 
      num += response.num ; 
      console.log(num); // you will get 2 here 
     } 
    }); 
    // responce havnt get ,you always get 1 
    console.log(num); // => want 2, get 1 
}); 
관련 문제