반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | var TimerModule = (function(){ var timer = { time: 0, // default get: function(){ return this.time; }, set: function(_time){ this.time = _time; }, tick: function(_tick){ this.time += _tick } }; var startTimer = 0, endTimer = 1000; // default return { setTimer: function(_startTime, _endTime){ timer.set(_startTime); startTimer = _startTime; endTimer = _endTime; }, isTick: function(){ return (timer.get() > endTimer); }, addTick: function(_tick){ timer.tick(_tick); }, resetTick: function(_endTime){ timer.set(startTimer); endTimer = _endTime; } }; })(); var TextModule = (function(){ var text = ""; var currentIndex = 0; var timerModule; TypingText = function(){ if(timerModule.isTick()){ switch(text[currentIndex++]) { case '.': timerModule.resetTick(500); // millisecond break; case ' ': case '?': case '!': timerModule.resetTick(800); break; default: timerModule.resetTick(1000); break; } } return text.substring(0, (currentIndex < text.length) ? currentIndex : text.length); } return{ setText: function(_text, _timerModule){ if(typeof(_text) != "string" || typeof(_timerModule) != typeof(TimerModule)){ console.log("TypeError >> TextModule"); return ; } text = _text; timerModule = _timerModule; }, readText: function(_elapseTick){ timerModule.addTick(_elapseTick); return TypingText(); } }; })(); /* Test Code */ var _testModule1 = function(){ return new Promise(function(resolve, reject) { TimerModule.setTimer(0, 1000); // Set Initial_Time resolve(); }); }; var _testModule2 = function(){ return new Promise(function(resolve, reject) { TextModule.setText("사랑해요... 지성군!", TimerModule); resolve(); }); }; var _testModule3 = function(){ var lastTick; var Update = function(){ var currentTick = new Date().getTime(); var elapseTick = currentTick - (lastTick || currentTick); console.log(TextModule.readText(elapseTick)); lastTick = currentTick; } return new Promise(function(resolve, reject) { setInterval(Update, 100); resolve(); }); }; Promise.all([_testModule1(), _testModule2(), _testModule3()]).then(function(){ console.log("All Completed"); }); | cs |
반응형
'언어 > js' 카테고리의 다른 글
ECMAScript 6 Tutorial (0) | 2016.02.26 |
---|---|
commonjs & require (0) | 2016.02.23 |
closure (0) | 2016.02.23 |
Module Pattern (0) | 2016.02.23 |
즉각 실행 (0) | 2016.02.23 |