diff --git a/snippets/defer.md b/snippets/defer.md new file mode 100644 index 000000000..88706b86d --- /dev/null +++ b/snippets/defer.md @@ -0,0 +1,21 @@ +### defer + +Defers invoking a function until the current call stack has cleared. + +Use `window.setTimeout()` with a timeout of 1ms to add a new event to the browser +event queue and allow the rendering engine to complete its work. Use the spread/rest (`...`) +operator to supply the function with an arbitrary number of arguments. + +```js +const defer = (fn, ...args) => setTimeout(fn, 1, ...args); +``` + +```js +// Example A: +defer(console.log, 'a'), console.log('b'); // logs 'b' then 'a' + +// Example B: +document.querySelector('#someElement').innerHTML = 'Hello'; +longRunningFunction(); // The browser will not update the HTML until this has finished +defer(longRunningFunction); // The browser will update the HTML then run the function +``` diff --git a/tag_database b/tag_database index 708f71b32..13d2ab730 100644 --- a/tag_database +++ b/tag_database @@ -22,6 +22,7 @@ countVowels:string currentURL:browser curry:function deepFlatten:array +defer:function detectDeviceType:browser difference:array differenceWith:array