| # onetime |
| |
| > Ensure a function is only called once |
| |
| When called multiple times it will return the return value from the first call. |
| |
| *Unlike the module [once](https://github.com/isaacs/once), this one isn't naughty and extending `Function.prototype`.* |
| |
| ## Install |
| |
| ```sh |
| npm install onetime |
| ``` |
| |
| ## Usage |
| |
| ```js |
| import onetime from 'onetime'; |
| |
| let index = 0; |
| |
| const foo = onetime(() => ++index); |
| |
| foo(); //=> 1 |
| foo(); //=> 1 |
| foo(); //=> 1 |
| |
| onetime.callCount(foo); //=> 3 |
| ``` |
| |
| ```js |
| import onetime from 'onetime'; |
| |
| const foo = onetime(() => {}, {throw: true}); |
| |
| foo(); |
| |
| foo(); |
| //=> Error: Function `foo` can only be called once |
| ``` |
| |
| ## API |
| |
| ### onetime(fn, options?) |
| |
| Returns a function that only calls `fn` once. |
| |
| #### fn |
| |
| Type: `Function` |
| |
| The function that should only be called once. |
| |
| #### options |
| |
| Type: `object` |
| |
| ##### throw |
| |
| Type: `boolean`\ |
| Default: `false` |
| |
| Throw an error when called more than once. |
| |
| ### onetime.callCount(fn) |
| |
| Returns a number representing how many times `fn` has been called. |
| |
| Note: It throws an error if you pass in a function that is not wrapped by `onetime`. |
| |
| ```js |
| import onetime from 'onetime'; |
| |
| const foo = onetime(() => {}); |
| |
| foo(); |
| foo(); |
| foo(); |
| |
| console.log(onetime.callCount(foo)); |
| //=> 3 |
| ``` |
| |
| #### fn |
| |
| Type: `Function` |
| |
| The function to get call count from. |