2014-09-20 52 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,并且因为它没有声明,所以它是一个自动全局变量window.speed,而不是回调函数中的局部变量speed

console.log移到回调函数中,以在正确的时间执行。另外,总是声明你的变量。