Expressjs / node.js相当于php中的exit()

时间:2012-04-06 15:25:59

标签: javascript node.js express

我正在使用带有node.js的Expressjs,我有这样的路线:

    users.init(app.db, function() {

        users.checkUsername(user.username, function(err, count) {
            if (count > 0) {
                res.json({'username': 'unavailable'});
            }
        });

        users.checkEmail(user.email, function(err, count) {
            if (count > 0) {
                res.json({'email': 'unavailable'});
            }
        });

        users.insertUser(user, function(err, response) {
            res.json({'success' : 'true'});
        });

    })  

例如,在某些情况下,这将打印发送多个回复,用户名和电子邮件。

此路由是通过ajax调用的,在php中,我通常在回显json响应后执行exit()。有没有办法在Expressjs中做到这一点?

谢谢!

编辑:我可以用if / else包装所有内容或在每个内部设置一个标志,但只是看看是否有一种更加优雅的方式。

1 个答案:

答案 0 :(得分:2)

您无法对res.json执行“多重响应”(无论如何) - 每次使用它时,它都会将数据发送到客户端并完成响应。您需要在变量中保存(并更新)结果并在最后发送它。

现在我可以为您考虑两种可能性:

  • 嵌套回调实际上非常讨厌,但有时是必要的(例如第二次调用取决于第一次调用);

  • 异步回调队列在回调中,检查每个其他回调是否完成了作业。如果是这样的话。这可能有点难以自己实现,所以试试一个优秀的async库。