Node.js事件驱动的范例=杂乱的代码?

我来自PHP背景,现在正在尝试适应Node.js的事件驱动范例。 但是,我的代码很快就变得混乱了。 下面我将程序代码与实际的Node.js Redis代码进行比较。 我做对了吗?

程序(pseude代码)

if(!client.get("user:name:koen")) { client.set("user:name:koen", "user:id:" + client.incr("count:users")); } 

事件驱动(实际代码)

 client.get("user:name:koen", function(err, res) { if(!res){ client.incr("count:users", function(err, count){ client.set("user:name:koen", "user:id:" + count, function (err, res) { callback(err, res); }); }); } }); 

在这个问题中提到的callback地狱,在这里进行了仔细的解释,以及如何编写代码以避免它:

http://callbackhell.com/