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

标签 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 中或在每个内容中设置一个标志,但只是看看是否有更优雅的方式。

最佳答案

您不能使用 res.json 进行“多重响应”(不管那是什么意思)——每次您使用它时,它都会将数据发送到客户端并最终确定响应。您需要将结果保存(并更新)在一个变量中并在最后发送。

现在我可以为您想到两种可能性:

  • 嵌套回调实际上很烦人但有时是必要的(例如,如果第二次调用取决于第一次调用);

  • 异步回调队列 在回调中检查是否每个其他回调都完成了作业。如果是这样,请做出回应。自己实现它可能有点棘手,所以尝试使用一个优秀的 async。图书馆。

关于javascript - Expressjs/node.js 相当于 php 中的 exit(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10045573/

相关文章:

javascript - 在 MVC 中查找 Twitter Bootstrap 和 TinyMCE 之间的冲突

javascript - AJAX get() 数据

javascript - 使用 javascript 检查美国地址的正则表达式?

javascript - Node.js https 请求在本地工作,但部署到 heroku 时抛出超时

javascript - Angular +图像上传。将表单数据传输到后端时遇到问题

javascript - "const something = () => ({..."箭头函数模式

node.js - 我应该如何处理同一主机上同一端口上的多个发布者?

html - 在连续流上解码音频数据失败并出现空错误

javascript - Angular 发布表单数据(文本输入)到 Rest API

ajax - webapps 的路由基础设施 - express