diff --git a/snippets/defer.md b/snippets/defer.md new file mode 100644 index 000000000..7403d4c36 --- /dev/null +++ b/snippets/defer.md @@ -0,0 +1,19 @@ +### defer + +Defers invoking a function until the current call stack has cleared. + +Use `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 (`...`) 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 b8d779836..636ab2469 100644 --- a/tag_database +++ b/tag_database @@ -23,6 +23,7 @@ countVowels:string currentURL:browser curry:function deepFlatten:array +defer:function detectDeviceType:browser difference:array differenceWith:array