Javascript Console.log调用在响应请求后运行
我有一个中间件,如果没有找到令牌,请求就会响应,这就是发生的情况,但是console.log行在请求响应后仍然运行。为什么会这样?我一直认为res.json调用将“结束”中间件。提前谢谢Javascript Console.log调用在响应请求后运行,javascript,node.js,express,Javascript,Node.js,Express,我有一个中间件,如果没有找到令牌,请求就会响应,这就是发生的情况,但是console.log行在请求响应后仍然运行。为什么会这样?我一直认为res.json调用将“结束”中间件。提前谢谢 const jwt = require("jsonwebtoken") const config = require("../../utils/config") const requireAuthenticated = (req, res, next) => {
const jwt = require("jsonwebtoken")
const config = require("../../utils/config")
const requireAuthenticated = (req, res, next) => {
const token = req.headers.authorization
if (!token) {
res.status(400).json({ error: 'Token required' })
}
console.log(jwt.verify(token, config.JWT_SECRET))
}
module.exports = requireAuthenticated
这就是Javascript的工作原理。调用函数时,没有特殊的方法知道函数执行是否完成。它只运行完整的函数。 但是,您可以随时退出该函数 您可以使用
return
语句在条件失败后停止执行
选项1:在res.json()之后添加return
选项2:还可以返回res.json()
返回res.status(400).json({error:'tokenrequired'});如果这是您想要的,将终止执行。是什么让您相信在调用
res.json(…)
时执行将结束,而不使用返回
语句?谢谢Adil,很好,我在谷歌上搜索了一下,发现这很有帮助。
if (!token) {
res.status(400).json({ error: 'Token required' });
return;
}
if (!token) {
return res.status(400).json({ error: 'Token required' })
}