forked from PirateCare/Syllabus
37 lines
685 B
Markdown
37 lines
685 B
Markdown
|
# wrappy
|
||
|
|
||
|
Callback wrapping utility
|
||
|
|
||
|
## USAGE
|
||
|
|
||
|
```javascript
|
||
|
var wrappy = require("wrappy")
|
||
|
|
||
|
// var wrapper = wrappy(wrapperFunction)
|
||
|
|
||
|
// make sure a cb is called only once
|
||
|
// See also: http://npm.im/once for this specific use case
|
||
|
var once = wrappy(function (cb) {
|
||
|
var called = false
|
||
|
return function () {
|
||
|
if (called) return
|
||
|
called = true
|
||
|
return cb.apply(this, arguments)
|
||
|
}
|
||
|
})
|
||
|
|
||
|
function printBoo () {
|
||
|
console.log('boo')
|
||
|
}
|
||
|
// has some rando property
|
||
|
printBoo.iAmBooPrinter = true
|
||
|
|
||
|
var onlyPrintOnce = once(printBoo)
|
||
|
|
||
|
onlyPrintOnce() // prints 'boo'
|
||
|
onlyPrintOnce() // does nothing
|
||
|
|
||
|
// random property is retained!
|
||
|
assert.equal(onlyPrintOnce.iAmBooPrinter, true)
|
||
|
```
|