Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Study</title>
- </head>
- <body>
- <script>
- 'use strict'
- class Ticker {
- constructor(tickerId, baseDelay = 3000, ticksCount = 10, onTimeout) {
- this.tickerId = tickerId;
- this.delay = baseDelay;
- this.ticksCount = ticksCount;
- this.cnt = 0;
- this.onTimeout = onTimeout;
- }
- arm() {
- this.cnt = 0;
- this.id = setTimeout(function ticker(object) {
- console.log(`Ticker #${object.tickerId} -> ${object.cnt}`);
- (++object.cnt) % 2 ? object.delay *= 2 : object.delay /= 2;
- if (object.cnt == object.ticksCount) {
- clearTimeout(object.id);
- if (object.onTimeout) { object.onTimeout(); }
- }
- else {
- object.id = setTimeout(ticker, object.delay, object);
- }
- }, this.delay, this);
- return this;
- }
- disarm() {
- clearTimeout(this.id);
- return this;
- }
- setDelay(baseDelay) {
- this.delay = baseDelay;
- return this;
- }
- setTicksCount(ticksCount) {
- this.ticksCount = ticksCount;
- return this;
- }
- setOnTimeout(onTimeout) {
- this.onTimeout = onTimeout;
- return this;
- }
- }
- {
- let t1 = new Ticker(1, 1500, 3, () => { console.log('t1 is done!') });
- t1.arm();
- let t2 = new Ticker(2, 2500, 3, () => { console.log('t2 is done!') });
- t2.arm();
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment