【问题标题】:How do do a callback after redirect in expressjs在expressjs中重定向后如何进行回调
【发布时间】:2013-07-12 07:36:22
【问题描述】:

我正在使用重定向到一个页面

res.redirect('/pageOne');

所以重定向后我想调用一个函数,但是当我调用该函数时

 res.redirect('/pageOne');
 callBack();

我发现callBack在重定向之前执行,

那么有什么方法可以将callBack 传递给重定向? 根据api 它的编号。还有其他解决方法吗?

【问题讨论】:

    标签: javascript node.js express url-routing


    【解决方案1】:

    根据current implementation,没有办法将回调传递给redirect 方法。但是,由于响应对象resinherits from Node's own ServerResponse 又是Writable stream,因此您可以监视相关事件。例如,您可以尝试finish 事件:

    事件:“完成”

    end() 被调用并且没有更多块要写入时,会发出此事件。

    例如,

    res.on('finish', callback);
    res.redirect('/pageOne');
    

    【讨论】:

    • 我希望(我想这是问题的精神)回调将在下一页完成重定向调用后执行,但事实并非如此:事件是在一个几毫秒。考虑一下,我认为以一般方式处理这种情况非常困难(重定向可能会转到完全不同的服务器)。不过,如果重定向到同一服务器应用程序上的页面,我想知道一个基于 express 的解决方案。
    • @Muzietto 你是什么意思?在新 URL 完成渲染后调用回调?正在加载?是的,这将更加困难,我会说需要应用程序级代码。所有redirect 确实是响应中发送的特殊标头,然后响应结束并刷新。
    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2011-10-05
    • 2017-02-02
    • 1970-01-01
    相关资源
    最近更新 更多