javascript - Console.log 调用在响应请求后运行
问题描述
我有这个中间件,如果没有找到令牌,请求就会响应,这就是发生的情况,但是 console.log 行在请求响应后仍然运行。为什么会这样?我一直认为 res.json 调用会“结束”中间件。提前致谢。
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:return
在 res.json() 之后添加。
if (!token) {
res.status(400).json({ error: 'Token required' });
return;
}
选项 2:您也可以返回 res.json()
if (!token) {
return res.status(400).json({ error: 'Token required' })
}
推荐阅读
- huawei-mobile-services - json int 数据类型自动变为double
- php - PHP Mailer 返回 true 但未收到电子邮件
- c# - WPF 中的全局手写笔输入
- python - 使用 tf 别名导入 tensorflow 时无法导入 keras 模块
- qt - 在 setCamera 上 QT QCamera 分割失败
- .net - TableLayoutPanel 绘图性能(.Net)(但不在加载表单上)
- elasticsearch - 在 Windows 10 上运行 filebeat
- sql - 如何在 Oracle SQL 中将日期转换为 Shamsi/Persian 格式?
- python - 在 Docker 映像上运行多个 python 主文件
- python - 在操作过程中不小心取消了 python 的“pip”升级,现在 pip 出现故障