Javascript 为一个用户使nodejs函数连续
我有一个nodejs应用程序,它有一个处理用户和启动webapp的http请求的expressapi 如何使特定函数的执行按用户顺序进行?i、 e.将来自一个用户的呼叫排队,但将另一个用户的呼叫并行排队 这有意义吗 我发现有很多库可以对调用进行排队,或者根据时间限制请求。我将如何在用户基础上实现这一点Javascript 为一个用户使nodejs函数连续,javascript,node.js,express,Javascript,Node.js,Express,我有一个nodejs应用程序,它有一个处理用户和启动webapp的http请求的expressapi 如何使特定函数的执行按用户顺序进行?i、 e.将来自一个用户的呼叫排队,但将另一个用户的呼叫并行排队 这有意义吗 我发现有很多库可以对调用进行排队,或者根据时间限制请求。我将如何在用户基础上实现这一点 编辑 示例:我有两个已登录的用户。完全执行myFunction(“某个http请求”)大约需要3-5秒 user1调用myFunction()->立即执行 user2调用myFunction()
编辑 示例:我有两个已登录的用户。完全执行myFunction(“某个http请求”)大约需要3-5秒
为了避免事情过于复杂,可以使用“”模块的“自动”功能 如果您将并发性(int值)传递给它,它将并行运行该数量的任务(最多)。在我们的例子中,我们传递1,所以函数是为一个特殊的用户顺序执行的。 如果不传递任何值,它将运行尽可能多的并行任务
“严格使用”;
const async=require('async');
const=require('lodash');
//异步函数
常量myFunction=函数(数据,cb){
设置超时(()=>{
控制台日志(数据);
cb(空);
},随机(11000);
};
//请按照您的逻辑理解用户是否“特殊”
//所以我们按顺序调用函数
设isSpecialUser=false;
//如果这是特殊用户,则只允许一个并行
//否则-允许尽可能多
让并发性=isSpecialUser?1:空;
async.auto(
[
cb=>myFunction('First',cb),
cb=>myFunction('Second',cb),
cb=>myFunction('Third',cb),
],
并发性,
() => {
console.log(“全部完成”);
//在这里做需要的事情,所有的电话都打完了
//(顺序或并行,取决于用户)
}
);代码>为了不使事情过于复杂,可以使用“”模块的“自动”功能
如果您将并发性(int值)传递给它,它将并行运行该数量的任务(最多)。在我们的例子中,我们传递1,所以函数是为一个特殊的用户顺序执行的。
如果不传递任何值,它将运行尽可能多的并行任务
“严格使用”;
const async=require('async');
const=require('lodash');
//异步函数
常量myFunction=函数(数据,cb){
设置超时(()=>{
控制台日志(数据);
cb(空);
},随机(11000);
};
//请按照您的逻辑理解用户是否“特殊”
//所以我们按顺序调用函数
设isSpecialUser=false;
//如果这是特殊用户,则只允许一个并行
//否则-允许尽可能多
让并发性=isSpecialUser?1:空;
async.auto(
[
cb=>myFunction('First',cb),
cb=>myFunction('Second',cb),
cb=>myFunction('Third',cb),
],
并发性,
() => {
console.log(“全部完成”);
//在这里做需要的事情,所有的电话都打完了
//(顺序或并行,取决于用户)
}
);代码>也许我遗漏了什么。。你能举个例子吗?还有,为什么要同步?那条路线没有好处。。如果您试图调用一个同步函数,您可以在Promisehave a queue per user(每个用户有一个队列)中调用该函数?听起来您把同步和顺序混淆了。排队调用仍然是异步的。请编辑您的问题(标题、正文和标签)以澄清。我需要将每次请求限制为每个用户1个请求-优点是我可以控制这些特定的api调用,并且不会被阻止。我将尝试在帖子中添加一个更清晰的例子…@Bergi似乎是这样。相应地修改了。也许我遗漏了什么。。你能举个例子吗?还有,为什么要同步?那条路线没有好处。。如果您试图调用一个同步函数,您可以在Promisehave a queue per user(每个用户有一个队列)中调用该函数?听起来您把同步和顺序混淆了。排队调用仍然是异步的。请编辑您的问题(标题、正文和标签)以澄清。我需要将每次请求限制为每个用户1个请求-优点是我可以控制这些特定的api调用,并且不会被阻止。我将尝试在帖子中添加一个更清晰的例子…@Bergi似乎是这样。相应地修改了它。