为了账号安全,请及时绑定邮箱和手机立即绑定

nodejs请求进来我把请求放入队列,如何一个一个取出来?

nodejs请求进来我把请求放入队列,如何一个一个取出来?

慕仙森 2018-09-24 20:08:38
用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我该如何操作??各位大佬们
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

需要callback回传ack确认消息,参考amqp协议的消息确认机制

查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 1822 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信