Javascript 为一个用户使nodejs函数连续

Javascript 为一个用户使nodejs函数连续,javascript,node.js,express,Javascript,Node.js,Express,我有一个nodejs应用程序,它有一个处理用户和启动webapp的http请求的expressapi 如何使特定函数的执行按用户顺序进行?i、 e.将来自一个用户的呼叫排队,但将另一个用户的呼叫并行排队 这有意义吗 我发现有很多库可以对调用进行排队,或者根据时间限制请求。我将如何在用户基础上实现这一点 编辑 示例:我有两个已登录的用户。完全执行myFunction(“某个http请求”)大约需要3-5秒 user1调用myFunction()->立即执行 user2调用myFunction()

我有一个nodejs应用程序,它有一个处理用户和启动webapp的http请求的expressapi

如何使特定函数的执行按用户顺序进行?i、 e.将来自一个用户的呼叫排队,但将另一个用户的呼叫并行排队

这有意义吗

我发现有很多库可以对调用进行排队,或者根据时间限制请求。我将如何在用户基础上实现这一点


编辑

示例:我有两个已登录的用户。完全执行myFunction(“某个http请求”)大约需要3-5秒

  • user1调用myFunction()->立即执行

  • user2调用myFunction()->立即执行

  • user2在第一次调用仍在处理时立即再次调用myFunction()->调用排队,直到第一次调用完成。比如myFunction(),然后()


  • 为了避免事情过于复杂,可以使用“”模块的“自动”功能

    如果您将并发性(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似乎是这样。相应地修改了它。