Skip to content

Commit

Permalink
Add once snippet
Browse files Browse the repository at this point in the history
  • Loading branch information
atomiks committed Jan 1, 2018
1 parent d5cc6bf commit 70d3986
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
27 changes: 27 additions & 0 deletions snippets/once.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
### once

Ensures a function is called only once.

Utilizing a closure, use a variable flag and set it to true once the function is called
for the first time, preventing it from being called again. Allow the function to be supplied
with an arbitrary number of arguments using the spread/rest (`...`) operator.

```js
const once = fn => {
let called = false;
return (...args) => {
if (!called) {
fn(...args);
called = true;
}
};
};
```

```js
const startApp = event => {
// initializes the app
console.log(event); // access to any arguments supplied
};
document.addEventListener('click', once(startApp)); // only runs `startApp` once upon click
```
1 change: 1 addition & 0 deletions tag_database
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ negate:logic
nthElement:array
objectFromPairs:object
objectToPairs:object
once:function
onUserInputChange:browser
orderBy:object
palindrome:string
Expand Down

0 comments on commit 70d3986

Please sign in to comment.