节点js - 重定向后正在执行Express js代码

时间:2013-11-22 04:33:44

标签: node.js express

我有一个快速的网络应用程序。在应用程序中,我有一个路由,可以对数据库进行多次调用。在每次调用期间,如果失败,那么我将浏览器重定向到页面/暂时不可用(基本上是一个通用的错误页面,不会让用户失望,只是说稍后再试)。

伪代码的部分

app.get('/sign-in/twitter', function(req, res, next){
    request({
        'method' : 'GET',
        // BLAH BLAH BLAH CALL TO DATABASE
        // DATABASE CALLBACK
        function (error, response, body){
            if (response.statusCode === 200) {
                // DO GOOD STUFF
            }
            else if (response.statusCode === 404) {
                // DO COOL STUFF
            }
            else {
                temporarilyUnavailable(req, res, next);
            }
            // DO MORE STUFF AND SEND A RESPONSE
        }
    }
}

临时无法使用功能的伪代码部分

res.set({
    'Cache-Control' : 'private, no-cache, no-store, must-revalidate,
    'Content-Type' : 'text/plain;charset=utf-8',
}

res.redirect(302, 'https://' + req.host + '/' + url);

暂时不能使用TEMPORARILY UNAVAILABLE FUNCTION中的res.redirect会阻止执行任何代码吗?

1 个答案:

答案 0 :(得分:12)

不,它不应该。

你只是在响应上调用一个函数。它下面的代码可以执行。 res.redirect()没有什么神奇之处。

避免这种情况的一种常见做法是在重定向或以其他方式调用要退出当前函数的回调时返回:

return res.redirect(302, 'https://' + req.host + '/' + url);