2014-09-20 6 views
1

나는 간단한 firebase 데이터 검색을 수행하려고하고 있습니다. 여기 내가 가지고있는 것간단한 Firebase 데이터 검색

var fb = new Firebase("https://<my-app>.firebaseio.com"); 

fb.on('value', function(snapshot) { 
    var db = snapshot.val(); 
    var speed = db['speed']; 
}); 

console.log(speed); 

rnd = Math.floor(Math.random() * 7); 
fb.set({ speed: rnd}); 

내가 가지고있는 문제는 속도가 fb.on 영역 안에 갇혀있다. 나는 그것을 어떻게 꺼내야합니까?

답변

3

코드가 멈추지 않고 올바르게 호출하지 못합니다.

fb.on('value', function(snapshot) { 
    var db = snapshot.val(); 
    var speed = db['speed']; 
}); 

여기서 로컬 변수 speed과 함께 콜백 함수를 제공하고 있습니다. 이 변수는 올바르게 설정되지만 아무 것도하지 않습니다.

console.log(speed); 

rnd = Math.floor(Math.random() * 7); 
fb.set({ speed: rnd}); 

이 코드는 이벤트 핸들러 (fb.on('value', ...))를 설정 한 후 바로 실행하지만 코드가 비동기 적으로 실행됩니다. 이 함수는 아마도이 시점에서 실행되지 않았을뿐만 아니라 선언되지 않은 변수 speed에 액세스하고 있으며 콜백 함수에서 지역 변수 speed이 아닌 자동 전역 변수 window.speed이며 선언되지 않았기 때문에 여기에 액세스합니다.

console.log을 콜백 함수 내부로 이동하여 적절한 시점에 실행하십시오. 또한 항상 변수를 선언하십시오.