Files
30-seconds-of-code/snippets/once.md
Angelos Chalaris 96b88893e3 Update once.md
2018-01-02 10:44:42 +02:00

27 lines
678 B
Markdown

### once
Ensures a function is called only once.
Utilizing a closure, use a flag, `called`, 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 (`...`) 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
```