JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 12489608
  • Score
    100M100P100Q246059F
  • License MIT

Run the supplied function exactly one time (once)

Package Exports

  • one-time

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (one-time) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

one-time

Made by unshiftVersion npmBuild StatusDependenciesCoverage StatusIRC channel

Call the supplied function exactly one time. This prevents double callback execution. This module can be used on both node and browsers using browserify. No magical ES5/6 methods used unlike the once module does.

Installation

npm install one-time

Usage

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'
});

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 cite. So it's totally not suitable to be used in client side applications.

License

MIT