0.1.0 • Published 9 years ago

single-call-function-with-timeout v0.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

Single Call Function with Timeout

Utility to create functions that can only be called once.

Useful when racing two async flows and you want a common callback to be called by the winner only once.

Install

npm install single-call-function-with-timeout

API

var callback = once(fn, [context], [timeout-in-millis]);

Usage

Function that can only be called once

var once = require('single-call-function-with-timeout');

/* create our obj */
var caller = {
	numCalls: 0,
	incrementCalls: function(){
		this.numCalls++;
	}
};

/* create the single call fn */
caller.callback = once(caller.incrementCalls, caller);

caller.callback();
console.log(caller.numCalls); //=> 1

caller.callback();
console.log(caller.numCalls); //=> 1

Function that can only be called once with timeout

/* create our obj */
var caller = {
	numCalls: 0,
	incrementCalls: function(){
		this.numCalls++;
	}
};

/* create the single call fn */
caller.callback = once(caller.incrementCalls, caller, 1000);

//wait 1s
console.log(caller.numCalls); //=> 1

caller.callback();
console.log(caller.numCalls); //=> 1

Function with additional bound parameters

function fn(boundArg, callerArg){
	console.log(boundArg + callerArg);
}

/* create the single call fn */
var callback = once(caller.incrementCalls, null, null, "Hello ");

callback("World"); // => Hello World