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.
		
		
		
		
		
			
		
			
				
					37 lines
				
				685 B
			
		
		
			
		
	
	
					37 lines
				
				685 B
			| 
											3 years ago
										 | # 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) | ||
|  | ``` |