5

是的,因为我有多个 res.render 函数,所以我将它全部包装在一个大的 if else 语句中。

我怎么能做这样的事情,这应该会阻止其余的路线被执行:

if(req.params.url === undefined){
    res.render('layout');
    return;
}

或者:

if(req.params.url === undefined){
    res.render('layout');
    next();
}

但是两者都执行它们下面的其余代码,这导致标头已经发送。

现在我的代码如下所示:

exports.activate = function(req, res){
    var hash = req.params.hash;

    if(hash === undefined){
        res.render('activation');
        next();
    } else {
           // Do stuff with hash
           res.render('activateOne', {hash: hash});
    }

}
4

1 回答 1

3

我不是 100% 确定这一点,但是如果您只想在 res.render() 之后退出该功能,我认为您可以使用return. 这应该会阻止当前函数的其余部分执行。

一个简单的 AJAX 示例(我知道它的客户端,但它是一个异步函数,应该表现类似):

$.ajax({
   url: 'www.google.com',
   type: 'POST',
   error: function () {
      console.log('failure');
      return 0;
      console.log('after return');
   }
})

如果您尝试在浏览器控制台中执行此操作,您会注意到“失败”日志,但是它将在“返回后”消息之前停止。

于 2013-03-12T21:35:04.617 回答