Big update!Introducing GitHub Bot Commands. Learn more
Log inBook a demo


Package Overview
File Explorer

Advanced tools


Run the supplied function exactly one time (once)


Version published
Weekly downloads
increased by3.19%

Weekly downloads




Call the supplied function exactly one time. This prevents double callback execution. This module can be used on both Node.js, React-Native, or browsers using Browserify. No magical ES5/6 methods used unlike the once module does (except for the async version).


This module is published to the public npm registry and can be installed by running:

npm install --save one-time

Usage (normal)

Simply supply the function with the function that should only be called one time:

var one = require('one-time'); function load(file, fn) { fn = one(fn); eventemitter.once('load', fn); eventemitter.once('error', fn); // do stuff eventemitter.emit('error', new Error('Failed to load, but still finished')); eventemitter.emit('load'); } function example(fn) { fn = one(fn); fn(); fn('also receives all arguments'); fn('it returns the same value') === 'bar'; fn('never'); fn('gonna'); fn('give'); fn('you'); fn('up'); } example(function () { return 'bar' });

Usage (async)

The same pattern is available for async functions as well, for that you should import that one-time/async version instead. This one is optimized for async and await support. It following exactly the same as the normal version but assumes it's an async function () {} that it's wrapping instead of a regular function, and it will return an async function() {} instead of a regular function.

import one from 'one-time/async'; const fn = one(async function () { return await example(); }); await fn(); await fn(); await fn();

Why not once?

The main reason is that once cannot be used in a browser environment unless it's ES5 compatible. For a module as simple as this I find that unacceptable. In addition to that it super heavy on the dependency side. So it's totally not suitable to be used in client side applications.

In addition to that we make sure that your code stays easy to debug as returned functions are named in the same way as your supplied functions. Making heap inspection and stack traces easier to understand.





What is one-time?

Run the supplied function exactly one time (once)

Is one-time popular?

The npm package one-time receives a total of 6,534,458 weekly downloads. As such, one-time popularity was classified as popular.

Is one-time well maintained?

We found that one-time demonstrated a not healthy version release cadence and project activity because the last version was released a year ago.It has 3 open source maintainers collaborating on the project.

Last updated on 05 May 2019

Did you know?

Socket installs a Github app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

Install Socket


Subscribe to our newsletter

Get open source security insights delivered straight into your inbox. Be the first to learn about new features and product updates.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc