by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

20. periodicalExecuter 클래스




1. periodicalExecuter 클래스

타이머(Timer) 처리를 위한 클래스이다. 실행주기와 타이머 이벤트가 발생할때 실행할 메서드를 정의한다.
샘플예제

1. 주요 메서드 목록

주요 메소드

메서드 기능개요
initialize new 연산자를 사용하여 PeriodicalExecuter 클래스로 타이머 인스턴스를 생성할 때 실행되는 생성자 메서드이다. 초기값을 설정한다.
registerCallback 초 단위의 실행주기와 실행주기마다 호출 될 onTimerEvent() 메서드를 설정한다. 즉 타이머를 설정한다.
onTimerEvent 실행주기가 경과했을 때 자동으로 실행된다.
stop 타이머를 종료한다.

2. 메소드별 사용법 및 특징

var PeriodicalExecuter = Class.create({
  initialize: function(callback, frequency) {
    this.callback = callback;
    this.frequency = frequency;
    this.currentlyExecuting = false;

    this.registerCallback();
  },

  registerCallback: function() {
    this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
  },

  execute: function() {
    this.callback(this);
  },

  stop: function() {
    if (!this.timer) return;
    clearInterval(this.timer);
    this.timer = null;
  },

  onTimerEvent: function() {
    if (!this.currentlyExecuting) {
      try {
        this.currentlyExecuting = true;
        this.execute();
      } finally {
        this.currentlyExecuting = false;
      }
    }
  }
});

Class.create를 통하여 생성된 클래스로 일정 주기로 반복하여 메서드를 호출한다. 사용 방법은 반복하여 수행할 메서드와 실행 주기를 아규먼트로 넘겨 주면 된다.
구현되어 있는 메소드들은 모두 외부에서 사용할수 없다.

예제명 : periodicalExecuter.html
Event.observe(window, 'load', function() {
    Event.observe('startClick', 'click', PeriodTimer.startClick);
    Event.observe('stopClick', 'click', PeriodTimer.stopClick);
});
var PeriodTimer = {
    endButton: '',
    startClick: function(event) {
        PeriodTimer.count = 0;
        if (!PeriodTimer.endButton) {
            PeriodTimer.countTimer = new PeriodicalExecuter(PeriodTimer.runPeriodTimer, 1);
        }
        PeriodTimer.endButton = true;
    },

    runPeriodTimer: function() {
        PeriodTimer.count++;
        $('show1').innerHTML = '경과 시간(초) --> ' + PeriodTimer.count;
    },

    stopClick: function(event) {
        PeriodTimer.countTimer.stop();
        PeriodTimer.endButton = '';
    }
}

설명 할 내용 없음.

문서에 대하여

  • 최초작성자 : 허용운
  • 최초작성일 : 2008년 01월 03일
  • 이 문서는 Ajax prototype.js 프로토타입 완전분석을 정리한 내용 입니다.
  • 이 문서를 다른 블로그나 홈페이지에 퍼가실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.