整洁的callbacknode.js

试图想出一个合理的方式来构build这个。 为了简单起见,我使用Node.js,Redis和Express.js创build了一个用户注册页面。

用户向页面发布详细信息。

用户名被证实是有效的,然后Redis检查用户名是唯一的。 如果是,我们继续,如果不是,我们会返回一个错误信息和所有以前的细节。

密码被确认为有效。 如果没有错误返回,我们不会继续。

电子邮件被证实是Redis独一无二的。 如果是,我们继续,如果不是,我们返回一个错误信息,并停止。

如果此时没有错误,则将数据插入到Redis中。

这似乎很简单,但使用callback已经产生了一个混乱 – 特别是当它返回一个错误。

我怎样才能以一种整洁的方式来组织这个?

你所经历的是callback地狱。 有很多事情你可以做,如命名你的callback函数,而不是内联他们,遵循相同的模式等…

不过,我build议你看看asynchronous模块 。

在你的,非常典型的情况下,我会使用async.series像这样:

var validateUserName = function(username, callback){ if(username!='valid'){ return callback('invalid username'); } }; var checkRedis = function(username, callback){ // check to redis }; var checkPassword = function(password, callback){ // if password valid callback(); // else callback('invalid password'); } etc... async.series([checkUserName, checkRedis, checkPassword, etc...], next);