From fe6e45a4f01854266fc70d434b6fc14bcc35601a Mon Sep 17 00:00:00 2001 From: atomiks Date: Tue, 2 Jan 2018 08:40:31 +1100 Subject: [PATCH] Add defer snippet --- snippets/defer.md | 21 +++++++++++++++++++++ tag_database | 1 + 2 files changed, 22 insertions(+) create mode 100644 snippets/defer.md 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