【发布时间】:2014-07-31 05:38:39
【问题描述】:
通过以下代码,我异步访问Redis客户端,用一种随意的Node JS方式来编码:
function start()
{
var redis = require("redis");
var host = "127.0.0.1";
var port = 6379;
var client = redis.createClient(port, host);
client.on("error", function (err) {
console.log("Error " + err);
});
client.set("hi", "hey", redis.print);
return client;
}
function getValue(client, callback)
{
client.get("hi", function (err, res) {
callback(res);
});
}
var c = start();
getValue(c, function(r){
console.log('Result ' + r);
});
控制台打印“结果嘿”。
我不想在 getValue() 函数中使用回调,而是做一个经典的返回:
function getValue(client)
{
client.get("hi", function (err, res) {
return res;
});
}
为了拥有:
var r = getValue(c);
console.log(r);
所以要对 Redis 服务器进行同步调用。我已经尝试过 async, fibrous, ... 库,但我被卡住了,不知道该怎么做。
【问题讨论】:
-
您不能直接从函数返回异步结果,因为该函数在结果可用时已经返回。
标签: node.js redis asynchronous