Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | import { expressErrorMiddleware } from '../../../config/express'; import outboundOrdersPickingCtrl from '../../controllers/outboundOrderPicking'; const queuePicking = {}; const sleep = (time = 100) => new Promise((resolve) => { setTimeout(() => resolve(), time); }); function queueProcessPicking(req, res, next) { if (queuePicking[req.userId]) { queuePicking[req.userId].push([req, res, next]); } else { queuePicking[req.userId] = [[req, res, next]]; } } // Funcao que processa a fila por usuario async function queueUserProcess(userQueue = '') { while (queuePicking[userQueue] && queuePicking[userQueue].length > 0) { let reqRes = null; try { reqRes = queuePicking[userQueue].shift(); await outboundOrdersPickingCtrl.confirmPicking(reqRes[0], reqRes[1]); } catch (e) { if (reqRes) { const req = reqRes[0]; const res = reqRes[1]; const next = reqRes[2]; expressErrorMiddleware(e, req, res, next); } } } } // Funcao que monitora a fila async function initQueue() { while (true) { try { const usersQueue = Object.keys(queuePicking); const usersPromsQueues = []; for (let index = 0; index < usersQueue.length; index++) { const userQueue = usersQueue[index]; usersPromsQueues.push(queueUserProcess(userQueue)); } await Promise.all(usersPromsQueues); } catch (e) { /* */ } await sleep(100); } } export default { initQueue, queueProcessPicking, }; |