2013-03-31 39 views
3

我的Node.js這樣的代碼的:的Node.js - 獲取數據了一個回調函數

var data = ""; 
//redis client 
client.get(key,function(err,value){ 
    data += value; 
}); 
//output 
console.log(data); 

,但不打印輸出。爲什麼這樣?以及如何從回調函數中獲取數據?

非常感謝。

+0

看看我的答案的第一部分:http://stackoverflow.com/a/14220323/218196。它試圖解釋同步和異步代碼之間的差異。 –

+0

這篇文章也可能幫助:: http://stackoverflow.com/questions/14110798/cannot-get-valid-list-while-using-redis-with-node-js –

回答

3

您傳遞給redis客戶端的回調函數稍後會被調用(當數據通過網絡返回時),但是在進行redis調用之後,您嘗試在redis向您發送值之前打印該值。你需要等待redis返回一個值。

試試這個

var data = ""; 
//redis client 
client.get(key,function(err,value){ 
    data += value; 
    //output 
    console.log(data); 
}); 
+0

謝謝。得到它了。 – jackie

0

你的Redis結合的client.get功能是異步的。

它完成查詢redis服務器後會調用回調函數。你應該在回調中打印輸出。

var data = ""; 
//redis client 
client.get(key,function(err,value){ 
    data += value; 
    //output 
    console.log(data); 
});