asyncplify
Version:
FRP (functional reactive programming) library for Javascript
32 lines (25 loc) • 730 B
JavaScript
Asyncplify.fromNode = function (func) {
var args = [];
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
return new Asyncplify(FromNode, [func, args]);
};
function FromNode(options, sink) {
this.sink = sink;
this.sink.source = this;
var self = this;
function callback(err, value) {
if (!err) self.sink.emit(value);
self.sink.end(err);
}
try {
options[0].apply(null, options[1].concat([callback]));
} catch (ex) {
this.sink.end(ex);
}
}
FromNode.prototype.setState = function (state) {
if (state === Asyncplify.states.CLOSED)
this.sink = NoopSink.instance;
};