asyngleton

asynchronously generate singletons

7 个版本
安装
npm install asyngleton
yarn add asyngleton
pnpm add asyngleton
bun add asyngleton
README

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 2013-04-02
0.1.2 2013-04-02
0.1.1 2013-03-16
0.1.0 2013-03-15
0.0.2 2012-05-29
0.0.1 2012-04-26
0.0.0 2012-04-26