Merge pull request #455 from atomiks/once

[ADD `once.md`] once
This commit is contained in:
Angelos Chalaris
2018-01-02 10:49:18 +02:00
committed by GitHub
2 changed files with 19 additions and 0 deletions

18
snippets/once.md Normal file
View File

@ -0,0 +1,18 @@
### 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 => (called => (...args) => !called ? (called = true, fn(...args)) : undefined)()
```
```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
```

View File

@ -103,6 +103,7 @@ negate:logic
nthElement:array nthElement:array
objectFromPairs:object objectFromPairs:object
objectToPairs:object objectToPairs:object
once:function
onUserInputChange:browser onUserInputChange:browser
orderBy:object orderBy:object
palindrome:string palindrome:string