【问题标题】:is there a way to respond to a GET\POST outside of the specific (req, res) function?有没有办法在特定 (req, res) 函数之外响应 GET\POST ?
【发布时间】:2014-08-15 23:49:53
【问题描述】:

使用 Express (NodeJS),有没有办法保存请求的详细信息,以便稍后完成响应? (基本上,将请求挂起以等待响应)。不使用 setTimeout() 或 sleep 或任何其他延迟。

例如,如果这是我的功能:

function(req, res) {
    var data = req.body;
    setTimeout(function() {
        res.json(data);
    }, 3000);
}

是否可以在该函数范围之外使用 (req, res) 对象并在以后成功响应特定请求? (例如 30 秒后,或在代码的不同部分)

【问题讨论】:

  • 不使用 setTimeout()
  • 听起来您正在寻找长轮询...也许像这样的库? npmjs.org/package/http-delayed-response
  • 当你说'或在代码的不同部分'时,你的意思是在不同的执行点吗?当您说“稍后”时,您是指实际时间还是程序中的稍后时间?

标签: node.js express request response low-level


【解决方案1】:

不,我不这么认为。请求/响应特定于处理程序调用。

【讨论】:

  • 您有任何来源可以支持您的答案吗?
【解决方案2】:

是的,这是可能的。您需要做的就是在调用res.json() 或任何其他发送响应的函数之前调用一个长时间运行的非异步(阻塞)函数,例如

function(req, res) {
    var data = longRunningNonAsyncFsCall();
    res.jsonp(data);
}

我不认为setTimeout() 是你需要的。

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 2021-09-10
    • 2013-07-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多