The Wayback Machine - https://web.archive.org/web/20191022072755/https://github.com/sindresorhus/onetime
Skip to content
Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Ensure a function is only called once
JavaScript TypeScript
Branch: master
Clone or download
Latest commit fa37ad8 Jun 1, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Tidelift tasks May 31, 2019
.editorconfig Require Node.js 6 Jan 20, 2019
.gitattributes Require Node.js 6 Jan 20, 2019
.gitignore Require Node.js 6 Jan 20, 2019
.npmrc Require Node.js 6 Jan 20, 2019
.travis.yml Add Node.js 12 to testing (#8) Apr 26, 2019
index.d.ts Refactor TypeScript definition to CommonJS compatible export (#7) Apr 2, 2019
index.js Refactor TypeScript definition to CommonJS compatible export (#7) Apr 2, 2019
index.test-d.ts Refactor TypeScript definition to CommonJS compatible export (#7) Apr 2, 2019
license Require Node.js 6 Jan 20, 2019
package.json 5.1.0 Apr 2, 2019
readme.md Tidelift tasks May 31, 2019
test.js

readme.md

onetime Build Status

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, this one isn't naughty and extending Function.prototype.

Install

$ npm install onetime

Usage

const onetime = require('onetime');

let i = 0;

const foo = onetime(() => ++i);

foo(); //=> 0
foo(); //=> 0
foo(); //=> 0

onetime.callCount(foo); //=> 3
const onetime = require('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

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.

const foo = onetime(() => {});

foo();
foo();
foo();

console.log(onetime.callCount(foo));
//=> 3

fn

Type: Function

Function to get call count from.


Get professional support for this package with a Tidelift subscription
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.
You can’t perform that action at this time.