【发布时间】:2013-10-27 10:46:05
【问题描述】:
我来自 PHP 背景,现在正在尝试适应 Node.js 的事件驱动范例。但是,我的代码很快就会变得混乱。下面我将程序代码与实际的 Node.js Redis 代码进行比较。我这样做对吗?
PROCEDURAL(伪代码)
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);
});
});
}
});
【问题讨论】:
-
看看 jQuery 或类似库的 Deferred 概念。在我看来,它使代码更具可读性。
-
您的意思是“同步与异步”。两者都是程序性的。至于主要问题:是的,这就是你在异步范式中的做法。您可以使用一些帮助程序(例如async.js),但最终它看起来或多或少是这样的。
-
好吧,这就是我需要知道的。只是想确保我没有把事情复杂化。谢谢。
-
通常称为callback hell。