2016-09-22 51 views
0

client.get方法不redis的工作於Node.jsNode.js的請求方法回調

//blog function 
module.exports = { 
    index: function() { 

    var data = new Object(); 
    data.ip = base.ip(); 

    var redis = require("redis"); 
    var client = redis.createClient(6379,'192.168.33.10'); 

    client.get("foo",function(err,reply,callback) 
    { 
     var x=reply.toString(); 
    }); 

    data.y=x; 


    return data; 
    } 


}; 

data.y="bar"預期,但

x is not defined.

問題出在哪裏?

+0

我不明白,你給 –

+0

@ dm03514是正確的,你需要了解JavaScript的本性是異步鏈路 –

回答

1

您的問題是client.get是一種異步方法,您無法從中返回。您需要某種異步控制流,例如回調。

//blog function 
module.exports = { 
    index: function (callback) { 
    var data = new Object(); 
    data.ip = base.ip(); 
    var redis = require("redis"); 
    var client = redis.createClient(6379, '192.168.33.10'); 
    client.get("foo",function(err,reply) { 
     if(err) return callback(err); 
     data.y = reply.toString(); 
     callback(null, data); 
    }); 
    } 
}; 

你會再使用它像

var obj = require('./whatever'); 
obj.index(function(err, result) { 
    //result will contain your data. 
});