thunkify-wrap
Version:
Turn callbacks, arrays, generators, generator functions, and promises into a thunk
90 lines (65 loc) • 1.85 kB
Markdown
Turn each node function in an object return a thunk.
Turn a regular node function into one which returns a thunk,
useful for generator-based flow control such as [co](https://github.com/visionmedia/co).
[](https://nodei.co/npm/thunkify-wrap/)
```js
// the same as thunkify
var thunkify = require('thunkify-wrap');
var fs = require('fs');
fs.readFile = thunkify(fs.readFile);
fs.readFile('package.json', 'utf8')(function(err, str){
});
// thunkfiy an object
var user = {
add: function () {},
show: function () {},
list: function () {}
}
module.exports = thunkify(user);
```
also you can pass `ctx` as contenxt into thunkify, and `thunkify(object)` will use object as the context by default.
```js
var thunkify = require('thunkify-wrap');
var Cal = function (a, b) {
this.a = a;
this.b = b;
};
Cal.prototype.plus = function(callback) {
var self = this;
setTimeout(function () {
callback(null, self.a + self.b);
}, 5);
};
Cal.prototype.minus = function (callback) {
var self = this;
setTimeout(function () {
callback(null, self.a - self.b);
}, 5);
};
module.exports = Cal;
exports.create1 = function (a, b) {
return thunkify(new Cal(a, b));
};
// or
exports.create2 = function (a, b) {
var cal = new Cal(a, b);
cal.plus = thunkify(cal.plus, cal);
cal.minus = thunkify(cal.minus, cal);
};
```
by pass `methods` list, support only thunkify a part of methods in an object.
```
exports.create3 = function (a, b) {
var cal = new Cal(a, b);
thunkify(cal, cal, ['plus']);
// or
thunkify(cal, ['plus']);
};
```
MIT