NodeJS在发送响应到最后一个请求之前阻止新请求

时间:2019-11-18 17:44:42

标签: node.js

如何在将响应发送到最后一个请求之前阻止新请求。另一方面,只需同时处理一个请求。

app.get('/get', function (req, res) {
    //Stop enter new request
    someAsyncFunction(function(result){
         res.send(result);
         //New Request can enter now
    }
}

2 个答案:

答案 0 :(得分:2)

即使我同意jfriend00的观点,这也不是执行此操作的最佳方法,如果您看到这是一条路,我将仅使用某种状态管理来检查是否允许访问该/ get请求并返回一个不同的响应。

您可以使用数据库来执行此操作。我强烈建议为此使用Redis,因为它在内存中并且非常快。因此非常方便。如果愿意,可以使用mongodb或mysql,但是Redis最好。这就是抽象的样子-

假设您在数据库中有一个名为Person的条目,并且默认情况下将其设置为function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } Person.prototype.getInitials = function() { return `"${(this.firstName[0]+this.lastName[0]).toUpperCase()}"`; } /* Do not modify code below this line */ const johnDoe = new Person('john', 'doe'); console.log(johnDoe.getInitials(), '<-- should be "JD"');

isLoading

希望这会有所帮助

答案 1 :(得分:0)

呃,服务器被设计为处理来自多个用户的多个请求,因此当一个请求通过异步操作进行处理时,其他请求也可以被处理。没有这些,他们将无法扩展到几个用户之外。那是用于node.js的任何服务器框架的设计,包括Express。

因此,无论您实际上要解决什么问题,这都不是解决问题的方式。

如果您遇到某种并发性问题,这迫使您要求这样做,那么请分享您需要解决的ACTUAL并发性问题,因为与将服务器限制为一个请求相比,用另一种方法来解决它要好得多。时间。

相关问题