用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/150
提交
取消