Rev. 2.73

Ajax.PeriodicalUpdater 클래스
Ajax.PeriodicalUpdater 클래스는 정기적으로 데이터를 수신해 표시하기 위한 클래스입니다.Ajax.Base 클래스를 계승하고 있습니다.Ajax.Updater 클래스는 계승하고 있었습니다만,인스턴스 생성시의인수를 계승해, 내부에서Ajax.Updater의 인스턴스를 작성합니다.

initialize 메서드
Ajax.Base 클래스로부터 계승한 setOptions 메서드에 의해, options 프롭퍼티에 멤버를 등록하고 있는 것은 Ajax.Request, Ajax.Updater 클래스와 같습니다.

그 후, options.onComplete에 등록된 메서드를, onComplete 메서드로서 보관 유지합니다.

Ajax.PeriodicalUpdater의 인수 options의오브젝트에는,Ajax.Updater와 같은 멤버를 등록할 수 있어 더욱 frequency와 decay를 등록할 수 있습니다.frequency는 리퀘스트 간격초수를 지정합니다.디폴트는2 초가 됩니다.decay는, 수신 데이터로 변경이 없는 경우에 리퀘스트 간격을 펼치기 위한 값입니다.구체적으로는, 수신 데이터로 변경이 없을 때, frequency*deday가 다음의 리퀘스트까지의 초수가 되어, 다음번 한층 더 변경이 없으면, (frequency*deday)*deday가 다음의 리퀘스트까지의 초수가 됩니다.이것에 의해 불필요한 트래픽을 경감시킬 수가 있습니다.(예는 후술 updateComplete 메서드로 기술)

다음의 updater 프롭퍼티에는, 후술 onTimerEvent 메서드로 작성하는 Ajax.Updater 클래스의 인스턴스가 격납됩니다.디폴트를 하늘 오브젝트로 하고 있는 것은 알기 쉽게하기 위해(때문에)입니까.다만, updater의 오브젝트는 유효하게 활용되지 않고, 의미가 적은 생각이 듭니다.

인수 container를 container 프롭퍼티에, 인수 url를 url 프롭퍼티에 격납합니다.후술 onTimerEvent 메서드로 Ajax.Updater 클래스의 인스턴스 생성시에 사용합니다.

그 후, start 메서드를 호출합니다.

start 메서드
options.onComplete에 updateComplete 메서드를 bind를 사용해 등록하고 있습니다.그리고 onTimerEvent 메서드를 호출하고 있습니다.

options.onComplete에의 등록은 initialize 메서드라도 좋은 생각이 듭니다만.또, 「Prototype.js의 사용법」에서는start 메서드는 외부로부터 불릴 것은 없는, 이라고 쓰여져 있습니다만, 외부로부터에서도 부를 수 있다고 생각합니다.그 동작에 대해서는, 다음의 stop 메서드로 말합니다.

stop 메서드
updater 프롭퍼티는, 후술 onTimerEvent 메서드로 작성하는 Ajax.Updater 클래스의 인스턴스가 설정됩니다.이 onComplete 메서드를 초기화하고 있습니다.하지만, 전술한 것처럼, Ajax.Updater 클래스 직하에는 onComplete 메서드는 존재하지않고, 등록 수단도 없다고 생각합니다.조금 수수께끼입니다···.

timer 프롭퍼티는, 후술 updateComplete 메서드로 작성하는 타이머 식별자입니다.이것을 clearTimeout함수로 정지합니다.

마지막에 onComplete 메서드를 실행합니다.이것은 initilize로 options 프롭퍼티 오브젝트로부터 보관 유지한 메서드가 됩니다. stop 메서드의 인수가 그대로 건네받고 있습니다.omComplete 메서드가 없으면 아무것도 하지 않습니다.

updateComplete 메서드
options.decay 프롭퍼티가 있어, 한편 수신 데이터가 전회 수신 데이터와 같은 경우는, decay 프롭퍼티에 options.decay를 적산해 설정해 있습니다.수신 데이터가 전회와 다르면 decay 프롭퍼티는 1으로 합니다.lastText 프롭퍼티에 이번 수신 데이터를 보관 유지합니다.

onTimerEvent 메서드를, setTimeout 함수에 의해 decay*frequency의 초수 후에 실행합니다.timer 프롭퍼티에 그 타이머 식별자를 보관 유지합니다.

onTimerEvent 메서드
전술 start 메서드와 updateComplete 메서드로부터 불립니다.Ajax.updater 클래스의 인스턴스를 작성하는 메서드입니다.인스턴스는 updater 프롭퍼티에에 덧쓰기 보존되어 갑니다.다만, 이것을 유효하게 사용하고 있는 장소가 눈에 띄지 않는 것은 전술했던 대로입니다···.

Comments

Got something to add? You can just leave a comment.

Your Reaction Time!

captcha

avatar