The util/misc module provides miscellaneous utility functions. Currently this
consists primarily of functions related to throttling or debouncing function
calls, which can be particularly useful for events which tend to fire rapidly,
such as scroll. util/misc is also home to the addCssRule function,
used by various APIs across dgrid components.
require([ 'dgrid/util/misc' ], function (misc) {
// Produce a new function which will call `myFunction` a maximum of
// once per second
var myThrottledFunction = misc.throttle(myFunction, null, 1000);
})
For those unfamiliar with the distinction between throttling and debouncing,
they both center around the idea of limiting the frequency in which functions
are called.
| Property | Description |
|---|---|
defaultDelay |
Default delay (in milliseconds) used for throttle, debounce, and throttleDelayed; default value is 15. |
| Function | Description |
|---|---|
addCssRule(selector, rule) |
Programmatically adds styles for a given CSS selector by injecting a rule into a stylesheet in the document. Returns a handle with a remove function, which can be called to later remove the added style rule. This function is used by instance methods such as List#addCssRule and Grid#styleColumn; note however that calling the function in util/misc directly will not set up automatic removal at any given point. |
escapeCssIdentifier(id) |
Escapes characters in the given string that would be invalid in a CSS identifier (i.e. a tag name, class name, or id in a selector). Used internally by dgrid modules for calls to addCssRule and derivatives. |
throttle(func, context, delay) |
Returns a new function throttling the original. context defaults to the global object; delay defaults to defaultDelay. |
debounce(func, context, delay) |
Returns a new function debouncing the original. context and delay have the same defaults as for throttle. |
throttleDelayed(func, context, delay) |
Like throttle, but runs the original function after each time window elapses, rather than before. This can be useful for things like scroll events, where the last event is really what matters, but you still want to handle intermediate events as well. |