账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    nodejs请求进来我把请求放入队列,如何一个一个取出来?
    40
    0

    用scoket做聊天程序,请求进来,我把请求放入了队列,代码如下:

      rob_vest: async function (data, socket, io) {
            console.log(type, '------------------------------------------')
            var queue = new Queue();//创建队列
            queue.push(data)//往队列里放入请求数据
            get_vetst(queue,socket, io)//这是从队列取出数据
    
    
        },
    async function get_vetst(queue,socket, io) {
        // let sequlize = await db
        let len = queue.size()
        if (len !== 0) {
            let data = queue.pop() //从对列取出数据
            //下面是一些对数据的处理以及存库操作
            ...
            }
        }

    想上面这样写如果下一次的请求依赖上一次的操作表的结果会导致出现预想之外的结果,虽然是放入到了队列中,但是如果两次请求同时进来,还是会同时读取两次对列中的数据,然后同时对表进行操作,导致第二次的请求,没有得到第一次的结果,理想的流程是,两次请求进来,把两次的请求放入队列,然后会触发一个方法,这个方法读取队列中的数据,当第一次读取并且执行完一系列的操作后,在读取下一个数据再进行操作
    get_vetst方法不应该依赖rob_vest
    我该如何操作??各位大佬们

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部