fastflux
Version:
Message driven reactive state management
77 lines (59 loc) • 1.78 kB
JavaScript
exports.__esModule = true;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var _baseJs = require('./base.js');
var _baseJs2 = _interopRequireDefault(_baseJs);
/**
* @example
* let emitter = new Observable;
* let log = (v) => console.log("Received:", v);
*
* let subscription = new Subscription(emitter, log);
* assert(!subscription.isActive());
*
* subscription.activate();
* assert(subscription.isActive());
*
* subscription.terminate();
* assert(!subscription.isActive());
*/
var Subscription = (function () {
/**
* @param {Observable} source
* @param {function} subscriber
*/
function Subscription(source, subscriber) {
_classCallCheck(this, Subscription);
this._source = source;
this._subscriber = subscriber;
}
/**
* Equivalent to `source.hasSubscribed(subscriber)`
*
* See {@link Observable#hasSubscribed}
* @returns {boolean}
*/
Subscription.prototype.isActive = function isActive() {
return this._source.hasSubscribed(this._subscriber);
};
/**
* Equivalent to `source.subscribe(subscriber)`
*
* See {@link Observable#subscribe}
*/
Subscription.prototype.activate = function activate() {
this._source.subscribe(this._subscriber);
};
/**
* Equivalent to `source.unsubscribe(subscriber)`
*
* See {@link Observable#unsubscribe}
*/
Subscription.prototype.terminate = function terminate() {
this._source.unsubscribe(this._subscriber);
};
return Subscription;
})();
exports['default'] = Subscription;
module.exports = exports['default'];
;