2013-01-23 6 views
1

콜백 함수에서 변수의 값을 가져 오려고합니다. 여기서 내가 뭘 잘못하고 있니? 위의 코드에서 콜백 함수 내부에서 변수 값 가져 오기

var storyList = []; 
var storyTemp ={}; 

// get list of all stories 
db.getAllStoriesSet(function(err, reply) { 
    if (err) throw err; 
    else { 
     storyList = reply; 
     console.log("storylist inner: " + storyList); 
    }; 
}); 
console.log("storylist outer: " + storyList); 

는, I는 동일한 것으로 내외 storylist 값을 기대하고있다. 그러나 외부 storyList 값은 여전히 ​​null 목록으로 제공됩니다.

편집 : 질문에 추가하십시오. async 함수 외부에서 storyList 변수를 초기화했습니다. 그런 다음 비동기 함수에서 응답을 가져 와서 변수 storyList에 넣습니다. 나는 분명히 나 자신을 위해 파고있는 느리고 잔인한 죽음의 비공식적 인 구덩이에서 내 길을 속이기를 바랬다. 그것이 효과가 없어?

답변

5

getAllStoriesSet이 비동기이면 콜백이 실행되기 전에 해당 호출 다음 행이 호출됩니다. 그래서 storyList은 통화 전과 같습니다.

이것이 콜백을 제공하는 이유입니다. 콜백에 reply 값이 필요한 코드를 삽입해야합니다.

+0

비동기 함수입니다. 콜백없이 stoyList의 가치를 얻으려면 어떻게해야합니까? 이 전체 비동기 프로그래밍이 내 인생을 지옥으로 만들고 있습니다. :/다른 콜백을 추가해야합니까? 비동기 함수와 콜백을 데이지 체인 방식으로 사용하는 방법으로 동기식 프로그래밍을 할 수도 있습니다. –

+1

코드가 작동하지 않는 이유를 알고 있습니다. –

관련 문제