Debounce autobake in the web app.
Added debounce with guidance from the underscore.js implementation:
e944e0275a/underscore.js (L880)
feature-extract-files
parent
21c0fed833
commit
50784f2600
|
@ -1185,6 +1185,33 @@ const Utils = {
|
|||
"Latin1": CryptoJS.enc.Latin1,
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* A utility for "debouncing" functions.
|
||||
* Debouncing is when you want to ensure events triggered by an event are rate-limited.
|
||||
* @constant
|
||||
*/
|
||||
debounce(fn, delay) {
|
||||
let timeout;
|
||||
|
||||
return function() {
|
||||
/**
|
||||
* later calls the debounced function with arguments.
|
||||
* If the debounced function is called again, then the timeout
|
||||
* which calls later is cancelled.
|
||||
*/
|
||||
let later = () => {
|
||||
fn.apply(this, arguments);
|
||||
};
|
||||
|
||||
if (timeout) {
|
||||
clearTimeout(timeout);
|
||||
}
|
||||
|
||||
timeout = setTimeout(later, delay);
|
||||
};
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
export default Utils;
|
||||
|
|
|
@ -36,6 +36,8 @@ var App = function(categories, operations, defaultFavourites, defaultOptions) {
|
|||
this.ingId = 0;
|
||||
|
||||
window.chef = this.chef;
|
||||
|
||||
this.autoBake = Utils.debounce(this.autoBake, 300);
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue