2014-09-20 47 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移到回調函數中,以在正確的時間執行。另外,總是聲明你的變量。