UNPKG

paraemu

Version:

An working enviroment that provides a simplified interface for developers who want to fully parallelize node execution

49 lines (37 loc) 993 B
(()=>{ "use strict"; module.exports=(ctrl)=>{ const RIDDLE_POOL = {}; const RIDDLE_QUEUE = []; let TIMEOUT = null; ctrl.on( 'assign-riddle', (e, key, riddle)=>{ RIDDLE_POOL[key] = riddle; RIDDLE_QUEUE.push(key); }); ctrl.on( 'riddle-solved', (e, key)=>{ let idx = RIDDLE_QUEUE.indexOf(key); if ( idx >= 0 ) { RIDDLE_QUEUE.splice(idx, 1); } delete RIDDLE_POOL[key]; }); ctrl.on( 'clean-up', ()=>{ if ( TIMEOUT ) { clearTimeout(TIMEOUT); TIMEOUT=null; } ctrl.local( 'finalized' ); }); function ___SOLVE_RIDDLE(){ if ( RIDDLE_QUEUE.length > 0 ) { let key = RIDDLE_QUEUE.shift(); let riddle = RIDDLE_POOL[key]; let sum = 0; for ( let i=0; i<riddle; i++ ) { sum += i; } ctrl.emit( 'riddle-solved', key, sum ); } TIMEOUT = setTimeout(___SOLVE_RIDDLE, (Math.random() * 2000 + 500)|0) } TIMEOUT = setTimeout(___SOLVE_RIDDLE, (Math.random() * 2000 + 500)|0); }; })();