如何在将响应发送到最后一个请求之前阻止新请求。另一方面,只需同时处理一个请求。
app.get('/get', function (req, res) {
//Stop enter new request
someAsyncFunction(function(result){
res.send(result);
//New Request can enter now
}
}
答案 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并发性问题,因为与将服务器限制为一个请求相比,用另一种方法来解决它要好得多。时间。