res.json 后,后面的代码还会继续执行么
发布网友
发布时间:2022-04-25 15:07
我来回答
共1个回答
热心网友
时间:2022-05-15 03:31
最后一句代码是会运行的,但是内容不会写回。这个要从express源码查原因,res.json最后调用的是res.send返回,我摘入了一些res的源码内容:
...
var res = mole.exports = {
__proto__: http.ServerResponse.prototype
};
...
res.send = function(body){
...
// respond
this.end(head ? null : body);
return this;
};
最后是通过ServerResponse.prototype.end返回的,可以预计这个方法是会把socket给关闭(没有去继续追源码了,要详细了解可以去追查nodejs的源码),这就是为什么后面一句res.json不会返回(注意代码是运行的!)。
所以最好的写法是在前两个res.json后加上return
if(!user){
console.log("Error");
res.json({"status":-1,"msg":"Username Not exists"});
return;
}
if(user.password != password){
res.json({"status":-1,"msg":"Password Error"});
}