mdb.action = function (name) { var delay = mdb.RUNTIME; var delayState = 'pause'; switch (name) { case 'restart': appendToConsole('SStarting target process'); delay = 500; break; case 'pause': delay = 0; break; case 'stepIn': ++stackDepth; break; case 'stepOut': --stackDepth; break; case 'stepOver': delay = 2000; break; case 'go': delayState = 'exit'; break; default: throw new Error('bad action code'); } if (delay) { if (mdb.mode.getValue() == 'run') { throw new Error('bad state: already running at ' + name); } mdb.mode.setValue('run'); } if (pending) { scheduler.cancel(pending); } pending = scheduler.delay(mdb.mode.setValue.bind(mdb.mode, delayState), delay); };
// observable delay: starts false, becomes true after `ms` milliseconds // function Odelay(ms) { var b = O.slot(false); scheduler.delay(b.setValue.bind(b, true), ms); return b; }