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.
36 lines
685 B
36 lines
685 B
# 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) |
|
```
|
|
|