Javascript 如何在响应后停止执行代码
在这里,我不明白,在响应之后,为什么其余的代码正在执行。如果我错了,请帮助我。所以我想在响应之后停止执行调用,我该怎么做呢,因为不必要地访问数据库,我认为若代码正在执行,那个么响应处理程序就并没有什么好处了 我的响应处理程序是Javascript 如何在响应后停止执行代码,javascript,node.js,express,Javascript,Node.js,Express,在这里,我不明白,在响应之后,为什么其余的代码正在执行。如果我错了,请帮助我。所以我想在响应之后停止执行调用,我该怎么做呢,因为不必要地访问数据库,我认为若代码正在执行,那个么响应处理程序就并没有什么好处了 我的响应处理程序是 var responseHandler = function(res,responseObject,message,error,status){ console.log(responseObject) console.log(status) res.statu
var responseHandler = function(res,responseObject,message,error,status){
console.log(responseObject)
console.log(status)
res.status(status).send({
"error":error,
"message":message,
"response":responseObject
})
res.end();
}
module.exports.responseHandler = responseHandler;
下面,错误发生后,我正在响应,但console.log也在工作。所以我在那里编写了数据库调用,然后它也会执行。所以这里有误解
registrationObj.save(function(err,registrationObj){
if(err){
configurationHolder.ResponseUtil.responseHandler(res,null,configurationHolder.errorMessage.failedAuthorization,true,401);
console.log("printing");
} else {
next(null, registrationObj);
}
你能在你与数据库交谈的地方添加这篇文章吗?或者添加评论?现在还不太清楚问题出在哪里。@AlbertoZaccagni谢谢你的回答,我修改了问题,请检查一下,只是为了弄清楚:你在问为什么
responseHandler
之外的代码会在你调用res.end()后继续运行
?@JamesThorpe是的,在res.end()之后,console.log正在运行,为什么?据我所知,调用.end()
只是向服务器发出信号,表示您已完成向客户端发送数据。它实际上并没有停止服务器端处理—如果您想停止执行进一步的代码,您需要将逻辑放在适当的位置(可能会从responseHandler
?)返回一些内容)来告诉其余的代码您已经完成了,这样它就可以停止了。