2013-06-23 4 views
2

다음과 같이 함수 선언이 있습니다. 함수/익명 함수 내에서 부모에게 값을 반환하려면 어떻게해야합니까? 여기 콜백 함수에서 값을 반환하는 방법

내가

LB.getData = function(key) { 
    if(!key) return; 

    appAPI.db.async.get(key, function(value){ 
     data = (value === null) ? null : JSON.parse(value); 
     return data 
    }); 
}; 


var myData = LB.getData('user'); 

답변

7

비동기 기능처럼 보이는 작업을하려고 해요 것으로, 코드입니다. 비동기 프로그래밍의 핵심은 값을 반환하지 않는다는 것입니다. 결과를 소비하는 콜백에 가입합니다. 값을 반환하면 함수의 호출자가이 값을 사용할 수있을 때까지 기다려야하기 때문에. 그리고 대기자는이 발신자를 동결시킬 것이므로 나쁜 것입니다. 소모 할 때 단순히 콜백 기능을 제공 한 후

LB.getData = function(key, callback) { 
    if(!key) return; 

    appAPI.db.async.get(key, function(value) { 
     var data = (value === null) ? null : JSON.parse(value); 
     // invoke the callback and pass the results to it 
     callback(data); 
    }); 
}; 

과 :

그래서 하나의 가능성이 함수의 소비자가 비동기 작업의 결과를 얻을 수 있도록 해주는 콜백 매개 변수를 부모 기능을 제공하는 것입니다 부모 :

LB.getData('user', function(data) { 
    // use the data here 
    alert(data.someProperty); 
}); 
관련 문제