【发布时间】:2016-10-26 22:16:34
【问题描述】:
我有以下代码:
router.get('/:widget', function(req, res, next) {
var widget = req.params.widget;
if ( ! validate(widget) ) {
res.status(400).send("Invalid widget");
return;
}
redis.hget("e:" + widget, 'ccid', function (e, d) {
if (e){
res.status(500).send("Database query failed");
return;
}
if (d) {
res.status(200).send("Resource found");
return;
} else {
res.status(400).send("Unknown widget");
return;
}
});
res.status(200).send("why are you here?");
return;
});
我的印象是,当代码遇到“返回”时……它会退出函数。 但似乎正在发生的是,当逻辑命中:
res.status(400).send("Unknown widget");
return;
路径,它仍然命中
res.status(200).send("why are you here?");
return;
也是。我以为它会退出该方法。 显然,我错了......因为我收到了上述错误消息。当我在 redis.hget 调用之后删除 res.send() 和 return() 时,错误消失了。
我应该在每个 res.status().send() 之后使用什么来代替“return”语句?
【问题讨论】:
-
点击
return确实退出函数。但是在您的情况下,它退出了您传递给.hget的回调,您仍然在.get('/:widget' ...)内。
标签: javascript node.js