我只是想执行一个简单的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区域内。我如何从那里得到它?
您的代码不会被卡住,您在错误地调用它。
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
回调函数的内部以在适当的时间执行它。另外,请始终声明变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句