Forked from: edo_m18's forked: JSはじめちゃおうぜ 課題1 diff(55) forked: JSはじめちゃおうぜ 課題1 Takazudo Follow 2011-11-12 03:34:06 License: MIT License Fork0 Fav3 View400 Play Stop Reload Fullscreen Smart Phone Readme JavaScript 74 lines HTML 1 lines CSS 1 lines forked: JSはじめちゃおうぜ 課題1 JSはじめちゃおうぜ 課題1 検証用 // forked from edo_m18's "forked: JSはじめちゃおうぜ 課題1" http://jsdo.it/edo_m18/bCmE /** * 【JSはじめちゃおうぜ! 課題1】 * * ============================================== * 以下のような 遅延処理用のユーテリティ関数 * $ を実装しましょう * ---------------------------------------------- * 【使用例】 * $(関数 or ミリ秒数)(関数 or ミリ秒数)(関数 or ミリ秒数)....(関数 or ミリ秒数) * ---------------------------------------------- * 【条件】 * Firefox/Chromeでテストがすべて通ること * ============================================== * * @param {function,Number} arg //引数は数値か関数のみとする * @return {function} */ function $(arg, prev) { var defer = new MyDefer(); defer.next(arg); if(prev){ prev.done(function(){ defer.start(); }); }else{ defer.start(); } return function(nextArg){ return $(nextArg, defer); }; } var MyDefer = function(){ this._callbacks = []; }; MyDefer.prototype = { start: function(){ var self = this; if(this._delay){ setTimeout(function(){ self.resolve(); }, this._delay); }else{ self.resolve(); } }, resolve: function(){ this._wasResolved = true; if(!this._callbacks.length){ return; } for(var i=0, fn; fn=this._callbacks[i]; i++){ fn(); } this._callbacks = []; }, next: function(arg){ if(typeof arg === 'number'){ this._delay = arg; } if(typeof arg === 'function'){ this.done(arg); } return this; }, done: function(fn){ this._callbacks.push(fn); if(this._wasResolved){ this.resolve(); } return this; } }; <!-- --> forked: JSはじめちゃおうぜ 課題1 JSはじめちゃおうぜ 課題1 検証用 /* */ // forked from edo_m18's "forked: JSはじめちゃおうぜ 課題1" http://jsdo.it/edo_m18/bCmE /** * 【JSはじめちゃおうぜ! 課題1】 * * ============================================== * 以下のような 遅延処理用のユーテリティ関数 * $ を実装しましょう * ---------------------------------------------- * 【使用例】 * $(関数 or ミリ秒数)(関数 or ミリ秒数)(関数 or ミリ秒数)....(関数 or ミリ秒数) * ---------------------------------------------- * 【条件】 * Firefox/Chromeでテストがすべて通ること * ============================================== * * @param {function,Number} arg //引数は数値か関数のみとする * @return {function} */ function $(arg, prev) { var defer = new MyDefer(); defer.next(arg); if(prev){ prev.done(function(){ defer.start(); }); }else{ defer.start(); } return function(nextArg){ return $(nextArg, defer); }; } var MyDefer = function(){ this._callbacks = []; }; MyDefer.prototype = { start: function(){ var self = this; if(this._delay){ setTimeout(function(){ self.resolve(); }, this._delay); }else{ self.resolve(); } }, resolve: function(){ this._wasResolved = true; if(!this._callbacks.length){ return; } for(var i=0, fn; fn=this._callbacks[i]; i++){ fn(); } this._callbacks = []; }, next: function(arg){ if(typeof arg === 'number'){ this._delay = arg; } if(typeof arg === 'function'){ this.done(arg); } return this; }, done: function(fn){ this._callbacks.push(fn); if(this._wasResolved){ this.resolve(); } return this; } }; <!-- --> /* */ use an iframe compat browser, deer Play on jsdo.it games Share Embed QR Tag Download Complete! Description どんなゲームですか? Control Device スマートフォンコントローラー jsdo.it WebSocket Controller» マウス キーボード タッチデバイス Fullscreen 有効 無効 jsdo.it games から削除する Submit Tweet style Design view Code view code <script type="text/javascript" src="http://jsdo.it/blogparts/hYJw/js?view=design"></script><p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/Takazudo/hYJw" title="forked: JSはじめちゃおうぜ 課題1">forked: JSはじめちゃおうぜ 課題1 - jsdo.it - share JavaScript, HTML5 and CSS</a></p> Tweet twitter Favorite by fingaholic koichironish.. xui