yieldable
Make methods yieldable (via y$ name prefix). It's like thunkify, but for whole classes (prototypes) and objects (instances).
obj.someAsyncMethod(arg1, arg2, arg3, function(err, result) {...});
yieldable(obj);
var result = yield obj.y$someAsyncMethod(arg1, arg2, arg3);
Installation
node.js
npm install yieldable --save
API
yieldable(src, [prefix])
Make methods yieldable.
src
(required): Class, Object or an Array of Classes/Objects.
prefix
(optional): Custom name prefix for yieldable methods' variants. Default y$
.
Example
yieldable class (prototype)
var dbDriver = require('some-database-driver');
var co = require('co');
var yieldable = require('yieldable');
yieldable(dbDriver.Client);
co(function*() {
var db = new dbDriver.Client({host:'localhost', dbname:'myDatabase'});
yield db.y$connect();
var result = yield db.y$query('SELECT * FROM users WHERE username = ?', ['hajovsky']);
console.log(result);
yield db.y$disconnect();
})();
yieldable object (instance)
var dbDriver = require('some-database-driver');
var co = require('co');
var yieldable = require('yieldable');
co(function*() {
var db = yieldable(new dbDriver.Client({host:'localhost', dbname:'myDatabase'}));
yield db.y$connect();
var result = yield db.y$query('SELECT * FROM users WHERE username = ?', ['hajovsky']);
console.log(result);
yield db.y$disconnect();
})();
yieldable via custom prefix
var dbDriver = require('some-database-driver');
var co = require('co');
var yieldable = require('yieldable');
yieldable(dbDriver.Client, 'yyy_');
co(function*() {
var db = new dbDriver.Client({host:'localhost', dbname:'myDatabase'});
yield db.yyy_connect();
var result = yield db.yyy_query('SELECT * FROM users WHERE username = ?', ['hajovsky']);
console.log(result);
yield db.yyy_disconnect();
})();
make yieldable multiple classes/objects
var cql = require('node-cassandra-cql');
var MongoClient = require('mongodb').MongoClient;
var redis = require("redis");
var redisClient = redis.createClient();
var yieldable = require('yieldable');
yieldable([
cql.Client,
MongoClient,
redisClient
]);