You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.8 KiB
53 lines
1.8 KiB
"use strict"; |
|
var __extends = (this && this.__extends) || function (d, b) { |
|
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; |
|
function __() { this.constructor = d; } |
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); |
|
}; |
|
var Subject_1 = require('./Subject'); |
|
var Subscription_1 = require('./Subscription'); |
|
/** |
|
* @class AsyncSubject<T> |
|
*/ |
|
var AsyncSubject = (function (_super) { |
|
__extends(AsyncSubject, _super); |
|
function AsyncSubject() { |
|
_super.apply(this, arguments); |
|
this.value = null; |
|
this.hasNext = false; |
|
this.hasCompleted = false; |
|
} |
|
/** @deprecated internal use only */ AsyncSubject.prototype._subscribe = function (subscriber) { |
|
if (this.hasError) { |
|
subscriber.error(this.thrownError); |
|
return Subscription_1.Subscription.EMPTY; |
|
} |
|
else if (this.hasCompleted && this.hasNext) { |
|
subscriber.next(this.value); |
|
subscriber.complete(); |
|
return Subscription_1.Subscription.EMPTY; |
|
} |
|
return _super.prototype._subscribe.call(this, subscriber); |
|
}; |
|
AsyncSubject.prototype.next = function (value) { |
|
if (!this.hasCompleted) { |
|
this.value = value; |
|
this.hasNext = true; |
|
} |
|
}; |
|
AsyncSubject.prototype.error = function (error) { |
|
if (!this.hasCompleted) { |
|
_super.prototype.error.call(this, error); |
|
} |
|
}; |
|
AsyncSubject.prototype.complete = function () { |
|
this.hasCompleted = true; |
|
if (this.hasNext) { |
|
_super.prototype.next.call(this, this.value); |
|
} |
|
_super.prototype.complete.call(this); |
|
}; |
|
return AsyncSubject; |
|
}(Subject_1.Subject)); |
|
exports.AsyncSubject = AsyncSubject; |
|
//# sourceMappingURL=AsyncSubject.js.map
|