【问题标题】:Express server res.json("") take a lot of time快递服务器 res.json("") 需要很多时间
【发布时间】:2017-01-09 18:56:29
【问题描述】:

我有 nodejs 应用程序,我使用 typescript 和 Express 服务器和 express-session。

我还有从客户端获取请求和响应的路由功能。

private async changeVis(req: express.Request, res: express.Response) {
   Let mySession=._deepClone(req.session['blah']);
   MyModule.changeViz(mySession).then(function(myRes){
    req.session["blah"] = myRes;

    console.log('before res.json');        
    res.json("");
    console.log('after res.json');
}); 

我的问题是,那行

 res.json("");

大约需要 5 秒,“res.json”出现之前和“res.json”出现之后的时间差为正负 5 秒。

现在,当我不使用会话时,功能是这样的:

private async changeVis(req: express.Request, res: express.Response) {
   MyModule.changeViz().then(function(){;
    console.log('before res.json');        
    res.json("");
    console.log('after res.json');
}); 

没有增量,“after res.json”紧跟在“before res.json”之后。

我尝试添加 res.end(),但没有帮助。

有人可以帮忙吗?

【问题讨论】:

  • 你是如何测量这 5 秒的?
  • console.time("res");console.timeEnd("res")
  • 您运行的是哪个版本的 Node?你能用一个简单的 Express 应用重现这个吗?
  • 节点版本 6。我现在更喜欢使用 express

标签: node.js express express-session


【解决方案1】:

因为您将函数声明为异步。您的 res 对象将等到函数中的所有进程结束。 您可以在 res.end(); 之后创建所有其他功能; 或者从函数中移除 async

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多