Remove code relating to parallel execution from PeriodicalExecuter. #23

Open
wants to merge 2 commits into
from
@@ -31,13 +31,18 @@ var PeriodicalExecuter = Class.create({
initialize: function(callback, frequency) {
this.callback = callback;
this.frequency = frequency;
- this.currentlyExecuting = false;
- this.registerCallback();
+ this.start();
},
- registerCallback: function() {
- this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+ /**
+ * PeriodicalExecuter#start() -> undefined
+ *
+ * Starts the [[PeriodicalExecuter]] or restarts it if `#stop`
+ * was previously called.
+ **/
+ start: function() {
+ if (!this.timer) this.timer = setInterval(this.execute.bind(this), this.frequency * 1000);
},
execute: function() {
@@ -71,22 +76,4 @@ var PeriodicalExecuter = Class.create({
clearInterval(this.timer);
this.timer = null;
},
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- // IE doesn't support `finally` statements unless all errors are caught.
- // We mimic the behaviour of `finally` statements by duplicating code
- // that would belong in it. First at the bottom of the `try` statement
- // (for errorless cases). Secondly, inside a `catch` statement which
- // rethrows any caught errors.
- try {
- this.currentlyExecuting = true;
- this.execute();
- this.currentlyExecuting = false;
- } catch(e) {
- this.currentlyExecuting = false;
- throw e;
- }
- }
- }
});
@@ -12,24 +12,4 @@ new Test.Unit.Runner({
this.assertEqual(3, peEventCount);
});
},
-
- testOnTimerEventMethod: function() {
@arbales
arbales Jul 16, 2011

Didn't seem like this was performing any function that the previous test wasn't already doing, given that currentlyExecuting was removed.

- var testcase = this,
- pe = {
- onTimerEvent: PeriodicalExecuter.prototype.onTimerEvent,
- execute: function() {
- testcase.assert(pe.currentlyExecuting);
- }
- };
-
- pe.onTimerEvent();
- this.assert(!pe.currentlyExecuting);
-
- pe.execute = function() {
- testcase.assert(pe.currentlyExecuting);
- throw new Error()
- }
- this.assertRaise('Error', pe.onTimerEvent.bind(pe));
- this.assert(!pe.currentlyExecuting);
- }
});