1

试图想出一种合理的方式来构建它。为简单起见,我正在使用 Node.js、Redis 和 Express.js 创建一个用户注册页面。

用户将详细信息发布到页面。

确认用户名有效,然后 Redis 检查用户名是否唯一。如果是,我们继续,如果不是,我们返回错误消息和所有以前的详细信息。

确认密码有效。如果不是,则返回错误并且我们不继续。

电子邮件在 Redis 中被确认是唯一的。如果是,我们继续,如果不是,我们返回错误消息并停止。

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

这看起来很简单,但是使用回调会产生一团糟——尤其是在返回错误时。

我怎样才能以一种整洁的方式构建它?

4

1 回答 1

1

你所经历的是回调地狱。你可以做很多事情,比如命名你的回调函数而不是内联它们,遵循相同的模式等......

但是,我建议您查看async 模块

在您非常典型的情况下,我会像这样使用 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);
于 2013-02-24T23:03:44.363 回答