polymer-analyzer
Version:
Static analysis for Web Components
90 lines (79 loc) • 2.96 kB
HTML
<!--
@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
-->
<!--
<link rel="import" href="../lib/async.html">
<link rel="import" href="../lib/debounce.html">
-->
<script>
Polymer.Base._addFeature({
_setupDebouncers: function() {
this._debouncers = {};
},
/**
* Call `debounce` to collapse multiple requests for a named task into
* one invocation which is made after the wait time has elapsed with
* no new request. If no wait time is given, the callback will be called
* at microtask timing (guaranteed before paint).
*
* debouncedClickAction: function(e) {
* // will not call `processClick` more than once per 100ms
* this.debounce('click', function() {
* this.processClick();
* }, 100);
* }
*
* @method debounce
* @param {String} jobName String to indentify the debounce job.
* @param {Function} callback Function that is called (with `this`
* context) when the wait time elapses.
* @param {number} wait Optional wait time in milliseconds (ms) after the
* last signal that must elapse before invoking `callback`
*/
debounce: function(jobName, callback, wait) {
return this._debouncers[jobName] = Polymer.Debounce.call(this,
this._debouncers[jobName], callback, wait);
},
/**
* Returns whether a named debouncer is active.
*
* @method isDebouncerActive
* @param {String} jobName The name of the debouncer started with `debounce`
* @return {boolean} Whether the debouncer is active (has not yet fired).
*/
isDebouncerActive: function(jobName) {
var debouncer = this._debouncers[jobName];
return !!(debouncer && debouncer.finish);
},
/**
* Immediately calls the debouncer `callback` and inactivates it.
*
* @method flushDebouncer
* @param {String} jobName The name of the debouncer started with `debounce`
*/
flushDebouncer: function(jobName) {
var debouncer = this._debouncers[jobName];
if (debouncer) {
debouncer.complete();
}
},
/**
* Cancels an active debouncer. The `callback` will not be called.
*
* @method cancelDebouncer
* @param {String} jobName The name of the debouncer started with `debounce`
*/
cancelDebouncer: function(jobName) {
var debouncer = this._debouncers[jobName];
if (debouncer) {
debouncer.stop();
}
}
});
</script>