This repository was archived by the owner on Apr 20, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
Copy pathtimeinterval.js
50 lines (43 loc) · 1.67 KB
/
timeinterval.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
var TimeIntervalObservable = (function (__super__) {
inherits(TimeIntervalObservable, __super__);
function TimeIntervalObservable(source, s) {
this.source = source;
this._s = s;
__super__.call(this);
}
TimeIntervalObservable.prototype.subscribeCore = function (o) {
return this.source.subscribe(new TimeIntervalObserver(o, this._s));
};
return TimeIntervalObservable;
}(ObservableBase));
var TimeIntervalObserver = (function (__super__) {
inherits(TimeIntervalObserver, __super__);
function TimeIntervalObserver(o, s) {
this._o = o;
this._s = s;
this._l = s.now();
__super__.call(this);
}
TimeIntervalObserver.prototype.next = function (x) {
var now = this._s.now(), span = now - this._l;
this._l = now;
this._o.onNext({ value: x, interval: span });
};
TimeIntervalObserver.prototype.error = function (e) { this._o.onError(e); };
TimeIntervalObserver.prototype.completed = function () { this._o.onCompleted(); };
return TimeIntervalObserver;
}(AbstractObserver));
/**
* Records the time interval between consecutive values in an observable sequence.
*
* @example
* 1 - res = source.timeInterval();
* 2 - res = source.timeInterval(Rx.Scheduler.timeout);
*
* @param [scheduler] Scheduler used to compute time intervals. If not specified, the timeout scheduler is used.
* @returns {Observable} An observable sequence with time interval information on values.
*/
observableProto.timeInterval = function (scheduler) {
isScheduler(scheduler) || (scheduler = defaultScheduler);
return new TimeIntervalObservable(this, scheduler);
};