Skip to content
This repository was archived by the owner on Apr 20, 2018. It is now read-only.

Commit 9e4c9a2

Browse files
Adding error handling docs
1 parent fcedc06 commit 9e4c9a2

30 files changed

Lines changed: 748 additions & 146 deletions

Gruntfile.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ module.exports = function (grunt) {
8787
'src/core/perf/operators/never.js',
8888
'src/core/perf/operators/pairs.js',
8989
'src/core/perf/operators/range.js',
90-
'src/core/linq/observable/repeat.js',
90+
'src/core/perf/operators/repeat.js',
9191
'src/core/perf/operators/just.js',
9292
'src/core/perf/operators/throw.js',
9393
'src/core/linq/observable/using.js',
@@ -380,7 +380,7 @@ module.exports = function (grunt) {
380380
'src/core/perf/operators/never.js',
381381
'src/core/perf/operators/pairs.js',
382382
'src/core/perf/operators/range.js',
383-
'src/core/linq/observable/repeat.js',
383+
'src/core/perf/operators/repeat.js',
384384
'src/core/perf/operators/just.js',
385385
'src/core/perf/operators/throw.js',
386386
'src/core/linq/observable/using.js',
@@ -673,7 +673,7 @@ module.exports = function (grunt) {
673673
'src/core/perf/operators/of.js',
674674
'src/core/perf/operators/pairs.js',
675675
'src/core/perf/operators/range.js',
676-
'src/core/linq/observable/repeat.js',
676+
'src/core/perf/operators/repeat.js',
677677
'src/core/perf/operators/just.js',
678678
'src/core/perf/operators/throw.js',
679679
'src/core/linq/observable/using.js',
@@ -822,7 +822,7 @@ module.exports = function (grunt) {
822822
'src/core/perf/operators/of.js',
823823
'src/core/perf/operators/pairs.js',
824824
'src/core/perf/operators/range.js',
825-
'src/core/linq/observable/repeat.js',
825+
'src/core/perf/operators/repeat.js',
826826
'src/core/perf/operators/just.js',
827827
'src/core/perf/operators/throw.js',
828828
'src/core/linq/observable/using.js',
@@ -958,7 +958,7 @@ module.exports = function (grunt) {
958958
'src/core/perf/operators/of.js',
959959
'src/core/perf/operators/pairs.js',
960960
'src/core/perf/operators/range.js',
961-
'src/core/linq/observable/repeat.js',
961+
'src/core/perf/operators/repeat.js',
962962
'src/core/perf/operators/just.js',
963963
'src/core/perf/operators/throw.js',
964964

@@ -1128,7 +1128,7 @@ module.exports = function (grunt) {
11281128
'src/core/perf/operators/of.js',
11291129
'src/core/perf/operators/pairs.js',
11301130
'src/core/perf/operators/range.js',
1131-
'src/core/linq/observable/repeat.js',
1131+
'src/core/perf/operators/repeat.js',
11321132
'src/core/perf/operators/just.js',
11331133
'src/core/perf/operators/throw.js',
11341134

dist/rx.all.compat.js

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3028,22 +3028,52 @@
30283028
return new RangeObservable(start, count, scheduler);
30293029
};
30303030

3031+
var RepeatObservable = (function(__super__) {
3032+
inherits(RepeatObservable, __super__);
3033+
function RepeatObservable(value, repeatCount, scheduler) {
3034+
this.value = value;
3035+
this.repeatCount = repeatCount == null ? -1 : repeatCount;
3036+
this.scheduler = scheduler;
3037+
__super__.call(this);
3038+
}
3039+
3040+
RepeatObservable.prototype.subscribeCore = function (observer) {
3041+
var sink = new RepeatSink(observer, this);
3042+
return sink.run();
3043+
};
3044+
3045+
return RepeatObservable;
3046+
}(ObservableBase));
3047+
3048+
function RepeatSink(observer, parent) {
3049+
this.observer = observer;
3050+
this.parent = parent;
3051+
}
3052+
3053+
RepeatSink.prototype.run = function () {
3054+
var observer = this.observer, value = this.parent.value;
3055+
function loopRecursive(i, recurse) {
3056+
if (i === -1 || i > 0) {
3057+
observer.onNext(value);
3058+
i > 0 && i--;
3059+
}
3060+
if (i === 0) { return observer.onCompleted(); }
3061+
recurse(i);
3062+
}
3063+
3064+
return this.parent.scheduler.scheduleRecursiveWithState(this.parent.repeatCount, loopRecursive);
3065+
};
3066+
30313067
/**
30323068
* Generates an observable sequence that repeats the given element the specified number of times, using the specified scheduler to send out observer messages.
3033-
*
3034-
* @example
3035-
* var res = Rx.Observable.repeat(42);
3036-
* var res = Rx.Observable.repeat(42, 4);
3037-
* 3 - res = Rx.Observable.repeat(42, 4, Rx.Scheduler.timeout);
3038-
* 4 - res = Rx.Observable.repeat(42, null, Rx.Scheduler.timeout);
30393069
* @param {Mixed} value Element to repeat.
30403070
* @param {Number} repeatCount [Optiona] Number of times to repeat the element. If not specified, repeats indefinitely.
30413071
* @param {Scheduler} scheduler Scheduler to run the producer loop on. If not specified, defaults to Scheduler.immediate.
30423072
* @returns {Observable} An observable sequence that repeats the given element the specified number of times.
30433073
*/
30443074
Observable.repeat = function (value, repeatCount, scheduler) {
30453075
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
3046-
return observableReturn(value, scheduler).repeat(repeatCount == null ? -1 : repeatCount);
3076+
return new RepeatObservable(value, repeatCount, scheduler);
30473077
};
30483078

30493079
var JustObservable = (function(__super__) {

dist/rx.all.compat.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/rx.all.compat.min.js

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/rx.all.js

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2883,22 +2883,52 @@
28832883
return new RangeObservable(start, count, scheduler);
28842884
};
28852885

2886+
var RepeatObservable = (function(__super__) {
2887+
inherits(RepeatObservable, __super__);
2888+
function RepeatObservable(value, repeatCount, scheduler) {
2889+
this.value = value;
2890+
this.repeatCount = repeatCount == null ? -1 : repeatCount;
2891+
this.scheduler = scheduler;
2892+
__super__.call(this);
2893+
}
2894+
2895+
RepeatObservable.prototype.subscribeCore = function (observer) {
2896+
var sink = new RepeatSink(observer, this);
2897+
return sink.run();
2898+
};
2899+
2900+
return RepeatObservable;
2901+
}(ObservableBase));
2902+
2903+
function RepeatSink(observer, parent) {
2904+
this.observer = observer;
2905+
this.parent = parent;
2906+
}
2907+
2908+
RepeatSink.prototype.run = function () {
2909+
var observer = this.observer, value = this.parent.value;
2910+
function loopRecursive(i, recurse) {
2911+
if (i === -1 || i > 0) {
2912+
observer.onNext(value);
2913+
i > 0 && i--;
2914+
}
2915+
if (i === 0) { return observer.onCompleted(); }
2916+
recurse(i);
2917+
}
2918+
2919+
return this.parent.scheduler.scheduleRecursiveWithState(this.parent.repeatCount, loopRecursive);
2920+
};
2921+
28862922
/**
28872923
* Generates an observable sequence that repeats the given element the specified number of times, using the specified scheduler to send out observer messages.
2888-
*
2889-
* @example
2890-
* var res = Rx.Observable.repeat(42);
2891-
* var res = Rx.Observable.repeat(42, 4);
2892-
* 3 - res = Rx.Observable.repeat(42, 4, Rx.Scheduler.timeout);
2893-
* 4 - res = Rx.Observable.repeat(42, null, Rx.Scheduler.timeout);
28942924
* @param {Mixed} value Element to repeat.
28952925
* @param {Number} repeatCount [Optiona] Number of times to repeat the element. If not specified, repeats indefinitely.
28962926
* @param {Scheduler} scheduler Scheduler to run the producer loop on. If not specified, defaults to Scheduler.immediate.
28972927
* @returns {Observable} An observable sequence that repeats the given element the specified number of times.
28982928
*/
28992929
Observable.repeat = function (value, repeatCount, scheduler) {
29002930
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
2901-
return observableReturn(value, scheduler).repeat(repeatCount == null ? -1 : repeatCount);
2931+
return new RepeatObservable(value, repeatCount, scheduler);
29022932
};
29032933

29042934
var JustObservable = (function(__super__) {

dist/rx.all.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/rx.all.min.js

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/rx.compat.js

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3028,22 +3028,52 @@
30283028
return new RangeObservable(start, count, scheduler);
30293029
};
30303030

3031+
var RepeatObservable = (function(__super__) {
3032+
inherits(RepeatObservable, __super__);
3033+
function RepeatObservable(value, repeatCount, scheduler) {
3034+
this.value = value;
3035+
this.repeatCount = repeatCount == null ? -1 : repeatCount;
3036+
this.scheduler = scheduler;
3037+
__super__.call(this);
3038+
}
3039+
3040+
RepeatObservable.prototype.subscribeCore = function (observer) {
3041+
var sink = new RepeatSink(observer, this);
3042+
return sink.run();
3043+
};
3044+
3045+
return RepeatObservable;
3046+
}(ObservableBase));
3047+
3048+
function RepeatSink(observer, parent) {
3049+
this.observer = observer;
3050+
this.parent = parent;
3051+
}
3052+
3053+
RepeatSink.prototype.run = function () {
3054+
var observer = this.observer, value = this.parent.value;
3055+
function loopRecursive(i, recurse) {
3056+
if (i === -1 || i > 0) {
3057+
observer.onNext(value);
3058+
i > 0 && i--;
3059+
}
3060+
if (i === 0) { return observer.onCompleted(); }
3061+
recurse(i);
3062+
}
3063+
3064+
return this.parent.scheduler.scheduleRecursiveWithState(this.parent.repeatCount, loopRecursive);
3065+
};
3066+
30313067
/**
30323068
* Generates an observable sequence that repeats the given element the specified number of times, using the specified scheduler to send out observer messages.
3033-
*
3034-
* @example
3035-
* var res = Rx.Observable.repeat(42);
3036-
* var res = Rx.Observable.repeat(42, 4);
3037-
* 3 - res = Rx.Observable.repeat(42, 4, Rx.Scheduler.timeout);
3038-
* 4 - res = Rx.Observable.repeat(42, null, Rx.Scheduler.timeout);
30393069
* @param {Mixed} value Element to repeat.
30403070
* @param {Number} repeatCount [Optiona] Number of times to repeat the element. If not specified, repeats indefinitely.
30413071
* @param {Scheduler} scheduler Scheduler to run the producer loop on. If not specified, defaults to Scheduler.immediate.
30423072
* @returns {Observable} An observable sequence that repeats the given element the specified number of times.
30433073
*/
30443074
Observable.repeat = function (value, repeatCount, scheduler) {
30453075
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
3046-
return observableReturn(value, scheduler).repeat(repeatCount == null ? -1 : repeatCount);
3076+
return new RepeatObservable(value, repeatCount, scheduler);
30473077
};
30483078

30493079
var JustObservable = (function(__super__) {

dist/rx.compat.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/rx.compat.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)