Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/onetime
Ensure a function is only called once
https://github.com/sindresorhus/onetime
Last synced: about 1 month ago
JSON representation
Ensure a function is only called once
- Host: GitHub
- URL: https://github.com/sindresorhus/onetime
- Owner: sindresorhus
- License: mit
- Created: 2013-12-01T22:19:23.000Z (almost 11 years ago)
- Default Branch: main
- Last Pushed: 2023-11-05T20:42:05.000Z (about 1 year ago)
- Last Synced: 2024-04-14T09:53:10.957Z (7 months ago)
- Language: JavaScript
- Homepage:
- Size: 39.1 KB
- Stars: 157
- Watchers: 8
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- Funding: .github/funding.yml
- License: license
- Security: .github/security.md
Awesome Lists containing this project
- awesome-nodejs-cn - onetime - 执行一次性函数 (包 / 其他)
- awesome-nodejs-cn - onetime - **star:159** 只运行一个函数一次 (包 / 杂项)
- awesome-nodejs - onetime - Only run a function once. (Packages / Miscellaneous)
- awesome-nodejs - onetime - Ensure a function is only called once - ★ 79 (Miscellaneous)
- awesome-node - onetime - Only run a function once. (Packages / Miscellaneous)
README
# 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(); //=> 1onetime.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.