Permalink
Browse files

In PeriodicalExcuter, removed unnecessary `currentlyExecuting` ivar a…

…nd other code relating to parallel execution.
  • Loading branch information...
1 parent 2a69140 commit 00dfd0d07cbb23ad637a99ab72d528fc61767219 @arbales committed Jul 16, 2011
Showing with 9 additions and 42 deletions.
  1. +9 −22 src/prototype/lang/periodical_executer.js
  2. +0 −20 test/unit/periodical_executer_test.js
@@ -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() {
+ 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() {
- 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);
- }
});

0 comments on commit 00dfd0d

Please sign in to comment.