Enforces rules in Gabe's discord server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Geometer1729 7e6807c787
make count more interesting
3 years ago
..
.npmignore Add thicc node modules 3 years ago
.travis.yml Add thicc node modules 3 years ago
LICENSE Add thicc node modules 3 years ago
README.md Add thicc node modules 3 years ago
index.js Add thicc node modules 3 years ago
package.json Add thicc node modules 3 years ago
test.js Add thicc node modules 3 years ago

README.md

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 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 stacktraces easier to understand.

License

MIT