UNPKG

asyncplify

Version:

FRP (functional reactive programming) library for Javascript

35 lines (31 loc) 1.1 kB
Asyncplify.range = function (options) { return new Asyncplify(RangeOp, options); }; function RangeOp(options, sink) { this.end = typeof options === 'number' ? options : options && options.end || 0; this.i = options && options.start || 0; this.sink = sink; this.sink.source = this; this.state = Asyncplify.states.RUNNING; this.step = options && options.step || 1; this.emitValues(); } RangeOp.prototype = { emitValues: function () { while (this.i < this.end && this.state === Asyncplify.states.RUNNING) { var j = this.i; this.i += this.step; this.sink.emit(j); } if (this.state === Asyncplify.states.RUNNING) { this.state = Asyncplify.states.CLOSED; this.sink.end(null); } }, setState: function (state) { if (this.state !== state && this.state !== Asyncplify.states.CLOSED) { this.state = state; if (state === Asyncplify.states.RUNNING) this.emitValues(); } } };