32 lines
804 B
JavaScript
32 lines
804 B
JavaScript
define([], function(){
|
|
// module:
|
|
// dojo/throttle
|
|
// summary:
|
|
// This module provide a throttler
|
|
|
|
return function(cb, wait){
|
|
// summary:
|
|
// Create a function that will only execute once per `wait` periods.
|
|
// description:
|
|
// Create a function that will only execute once per `wait` periods
|
|
// from last execution when called repeatedly. Useful for preventing excessive
|
|
// calculations in rapidly firing events, such as window.resize, node.mousemove
|
|
// and so on.
|
|
// cb: Function
|
|
// The callback to fire.
|
|
// wait: Integer
|
|
// time to delay before allowing cb to call again.
|
|
var canrun = true;
|
|
return function(){
|
|
if(!canrun){
|
|
return;
|
|
}
|
|
canrun = false;
|
|
cb.apply(this, arguments);
|
|
setTimeout(function(){
|
|
canrun = true;
|
|
}, wait);
|
|
};
|
|
};
|
|
});
|