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)
 | |
| ```
 |