once / 1.3.3 last updated 4 months ago created on Aug 14th 2012

Install

npm install --save once

Clone

git clone git@github.com:isaacs/once.git

dependencies

main wrappy 1.0.1 ISC

maintainers

isaacs isaacs

versions 6 total

1.3.3 4 months ago isaacs
1.3.2 a year ago isaacs
1.3.1 2 years ago isaacs
1.3.0 2 years ago isaacs
1.2.0 3 years ago isaacs
1.1.1 4 years ago isaacs
484984 Downloads yesterday.

readme

once

Only call a function once.

usage

1
2
3
4
5
6
7
8
var once = require('once')

function load (file, cb) {
  cb = once(cb)
  loader.load('file')
  loader.once('load', cb)
  loader.once('error', cb)
}

Or add to the Function.prototype in a responsible way:

1
2
3
4
5
6
7
8
9
// only has to be done once
require('once').proto()

function load (file, cb) {
  cb = cb.once()
  loader.load('file')
  loader.once('load', cb)
  loader.once('error', cb)
}

Ironically, the prototype feature makes this module twice as complicated as necessary.

To check whether you function has been called, use fn.called. Once the function is called for the first time the return value of the original function is saved in fn.value and subsequent calls will continue to return this value.

var once = require('once')

function load (cb) {
  cb = once(cb)
  var stream = createStream()
  stream.once('data', cb)
  stream.once('end', function () {
    if (!cb.called) cb(new Error('not found'))
  })
}
Resolving all dependencies.. This could take a while as our cache is not yet fully warmed up.