Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Run a function exactly one time

License

NotificationsYou must be signed in to change notification settings

isaacs/once

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Only call a function once.

usage

varonce=require('once')functionload(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:

// only has to be done oncerequire('once').proto()functionload(file,cb){cb=cb.once()loader.load('file')loader.once('load',cb)loader.once('error',cb)}

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

To check whether your function has been called, usefn.called. Once thefunction is called for the first time the return value of the originalfunction is saved infn.value and subsequent calls will continue toreturn this value.

varonce=require('once')functionload(cb){cb=once(cb)varstream=createStream()stream.once('data',cb)stream.once('end',function(){if(!cb.called)cb(newError('not found'))})}

once.strict(func)

Throw an error if the function is called twice.

Some functions are expected to be called only once. Usingonce for them wouldpotentially hide logical errors.

In the example below, thegreet function has to call the callback only once:

functiongreet(name,cb){// return is missing from the if statement// when no name is passed, the callback is called twiceif(!name)cb('Hello anonymous')cb('Hello '+name)}functionlog(msg){console.log(msg)}// this will print 'Hello anonymous' but the logical error will be missedgreet(null,once(msg))// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second timegreet(null,once.strict(msg))

About

Run a function exactly one time

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp