UNPKG

asyncplify

Version:

FRP (functional reactive programming) library for Javascript

46 lines (39 loc) 1.05 kB
Asyncplify.subject = function () { var r = new Asyncplify(Subject); r.subjects = []; r.emit = subjectEmit; r.end = subjectEnd; r._src = r; return r; }; function subjectEmit(value) { for (var i = 0; i < this.subjects.length; i++) this.subjects[i].emit(value); } function subjectEnd(err) { var subjects = this.subjects; this.subjects = []; for (var i = 0; i < subjects.length; i++) subjects[i].end(err); } function Subject(_, sink, parent) { this.parent = parent; this.sink = sink; this.sink.source = this; parent.subjects.push(this); } Subject.prototype = { emit: function (value) { this.sink.emit(value); }, end: function (err) { this.parent = null; this.sink.end(err); }, setState: function (state) { if (state === Asyncplify.states.CLOSED && this.parent) { removeItem(this.parent.subjects, this); this.parent = null; } } };