I am trying to get information from redis db and return it as the response body to the user. Firstly, here is the code that fails:
var redis = require("redis"), koa = require("koa"); var app = koa(), port = process.argv[2] || 3000, client = redis.createClient(); app.use(function* (next) { client.get("test", function (err, res) { this.body = res; }); yield next; }); app.listen(port); console.log("listen on port " + port)
Of course, since the exit call ends before the callback is called.
Then here is the success code:
function askRedit (callback) { client.get("test", callback); } app.use(function* (next) { this.body = yield askRedit; yield next; });
But I completely misunderstand why the second one works. Does yield in yield askRedit have the same behavior as yield next ?
EDIT: I just saw a page that seems to respond a little: https://github.com/visionmedia/co/blob/master/examples/redis.js
So, now I will try to understand this mystical profitability .. is this a way to do synchronous things with asynchronous calls?
source share