UNPKG

five-bells-visualization

Version:
70 lines (58 loc) 1.69 kB
<!-- @license Copyright (c) 2014 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt --> <script> Polymer.Debounce = (function() { // usage // invoke cb.call(this) in 100ms, unless the job is re-registered, // which resets the timer // // this.job = this.debounce(this.job, cb, 100) // // returns a handle which can be used to re-register a job var Async = Polymer.Async; var Debouncer = function(context) { this.context = context; this.boundComplete = this.complete.bind(this); }; Debouncer.prototype = { go: function(callback, wait) { var h; this.finish = function() { Async.cancel(h); }; h = Async.run(this.boundComplete, wait); this.callback = callback; }, stop: function() { if (this.finish) { this.finish(); this.finish = null; } }, complete: function() { if (this.finish) { this.stop(); this.callback.call(this.context); } } }; function debounce(debouncer, callback, wait) { if (debouncer) { debouncer.stop(); } else { debouncer = new Debouncer(this); } debouncer.go(callback, wait); return debouncer; } // exports return debounce; })(); </script>