diff --git a/src/core/Utils.js b/src/core/Utils.js index 2e4b354b..a49565e5 100755 --- a/src/core/Utils.js +++ b/src/core/Utils.js @@ -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; diff --git a/src/web/App.js b/src/web/App.js index b4fb3a75..de8af4a7 100755 --- a/src/web/App.js +++ b/src/web/App.js @@ -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); };