0.1.3 • Published 11 years ago

asyngleton v0.1.3

Weekly downloads
27
License
-
Repository
github
Last release
11 years ago

build status

Example

var asyngleton = require('../'),
fs = require('fs');

//called ONCE
var readDir = asyngleton(function(callback) {
	fs.readdir(__dirname, callback);
})

//initializes the singleton method above
readDir(function(err, files) {
	//do stuff
})

//called after there's a result
readDir(function(err, files) {
	//do stuff
});

API

asyngleton(factory)

Creates a new asyngleton function.

  • factory - the factory method for creating the singleton. This is called ONCE.

.reset()

Resets the target asyngleton so the factory can be called again.

var fs     = require('fs'),
asyngleton = require('asyngleton');

var readDir = asyngleton(function(callback) {
	fs.readdir(__dirname, callback);
});

readDir(function(err, files) {
	
	//make the readDir factory callable again
	readDir.reset();

	//do stuff...
});

.dictionary()

creates a dictionary of singletons

var dict = require('asyngleton').dictionary(),
fs = require('fs');

var readThisDir = dict.get("readThisDir", function(onSingleton) {
	fs.read(__dirname, onSingleton);
});

var readLibDir = dict.get("readLibDir", function(onSingleton) {
	fs.read(__dirname + "/lib", onSingleton);
})

readThisDir(function(err, files) {
	//do stuff
});

readLibDir(function(err, files) {
	//do stuff
});

dictionary.get(name, factory)

  • name - the name of the singleton in the dictionary
  • factory - the factory method incase the singleton doesn't exist

Structr Integration

var structr = require("structr");
structr.mixin(require("asyngleton"));


var TestClass = structr({
		
	/**
	 */

	"singleton load": function(onLoad) {
		fs.readFile(__dirname + "/config.json", onLoad);
	}
});

var test = new TestClass();

test.load(function(config) {
	
});

//fs.readFile is NOT called again at this point
test.load(function(config) {
	
});
0.1.3

11 years ago

0.1.2

11 years ago

0.1.1

11 years ago

0.1.0

11 years ago

0.0.2

12 years ago

0.0.1

12 years ago

0.0.0

12 years ago