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