mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-04 04:45:28 -05:00 
			
		
		
		
	
		
			
	
	
		
			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)
							 | 
						||
| 
								 | 
							
								```
							 |