CKEDITOR.tools.buffers.throttle
Throttles input
events (or any input
calls) and triggers output
not more often than once per minInterval
.
Unlike CKEDITOR.tools.buffers.event this class allows passing custom parameters into the input function. For more information see the Throttling function issue.
Filtering
Properties
-
_args : Mixed[]
private
Arguments for the last scheduled call.
Defaults to
[]
-
_context : Mixed
private readonly
The variable to be used as a context for the output calls.
-
_minInterval : Number
private readonly
The minimal interval (in milliseconds) between the calls.
-
_scheduledTimer : Number
private
The ID of a delayed function call that will be called after the current interval frame.
Defaults to
0
Methods
-
constructor( minInterval, output, [ contextObj ] ) → event
Creates a new instance of the buffer.
Parameters
minInterval : Number
The minimum interval between
output
calls in milliseconds.output : Function
The function that will be executed as
output
.[ contextObj ] : Object
The object used as context to the listener call (the
this
object).
Returns
-
input( [ args ] )
Acts as a proxy to the
output
function given in the constructor, providing function throttling.Guarantees that the
output
function does not get called more often than indicated by the _minInterval.If multiple calls occur within a single
minInterval
time, the most recentinput
call with its arguments will be used to schedule the nextoutput
call, and the previous throttled calls will be discarded.The first
input
call is always executed asynchronously which means that theoutput
call will be executed immediately.var buffer = new CKEDITOR.tools.buffers.throttle( 200, function( message ) { console.log( message ); } ); buffer.input( 'foo!' ); // 'foo!' logged immediately. buffer.input( 'bar!' ); // Nothing logged. buffer.input( 'baz!' ); // Nothing logged. // … after 200ms a single 'baz!' will be logged.
It can be easily used with events:
var buffer = new CKEDITOR.tools.buffers.throttle( 200, function( evt ) { console.log( evt.data.text ); } ); editor.on( 'key', buffer.input ); // Note: There is no need to bind the buffer as a context.
Parameters
[ args ] : Mixed[]
-
reset()
Resets the buffer state and cancels any pending calls.
-
_call()
private
Performs an actual call.
-
_clearTimer()
private
Cancels the deferred timeout.
-
_reschedule() → Boolean | undefined
private
Called when the function call should be rescheduled.
Returns
Boolean | undefined
If it returns
false
, the the parent call will be stopped.