Express.js路由响应同步

时间:2017-09-19 09:13:22

标签: rest express asynchronous async-await

问题

使用Node.js Express.js编写了3个月后,MongoDB和MSSQL实现了当用户运行复杂查询(需要15秒)时,其他用户在大型查询响应结束之前没有得到任何响应。

测试代码

所以我决定创建一个简单的应用程序并测试它。

const config = {
    port : 8080
};
const express = require('express');

/** RUN */
const app = express();
const http = require('http').Server(app);

/**
 * ROUTES
 */

app.get("/abc", function (req, res,next) {
    res.sendStatus(200);
    //next();
});

app.get("/", function (req, res,next) {
    var seconds = 10;
    var newDate = new Date().getTime() + seconds * 1000;
    var waitTill = new Date(newDate);
    while(waitTill > new Date()){
        console.log("waiting  : " + (newDate - new Date().getTime()));
    }
    res.sendStatus(200);
    //next();
});

/**
 * START
 */

http.listen(config.port,function (error) {
    if(error) logger.error(error);
    console.info("Server running on http://localhost:" + config.port);
});

结果

我向localhost:8080 /和localhost:8080 / abc发出了给定订单的请求。

http://localhost:8080/(10.02 s)

http://localhost:8080/abc(10.02 s) enter image description here

结论

  1. Express.js路由请求是异步。
  2. Express.js路由响应是同步。
  3. 问题

    如何使用express.js route创建异步响应?

0 个答案:

没有答案