From e2e89548dc1e91fd7cbaca25c80fa487e9b6233c Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Tue, 13 Oct 2015 15:51:28 -0700 Subject: [PATCH] perf(filter): add fast-path for filtering scalar observables --- src/observables/ScalarObservable.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/observables/ScalarObservable.ts b/src/observables/ScalarObservable.ts index 8e754b95f4..867c5cae69 100644 --- a/src/observables/ScalarObservable.ts +++ b/src/observables/ScalarObservable.ts @@ -62,4 +62,15 @@ export default class ScalarObservable extends Observable { return new ScalarObservable(project.call(thisArg || this, this.value, 0)); } } + + filter(select: (x: T, ix?: number) => boolean, thisArg?: any): Observable { + let result = tryCatch(select).call(thisArg || this, this.value, 0); + if (result === errorObject) { + return new ErrorObservable(errorObject.e); + } else if (result) { + return this; + } else { + return new EmptyObservable(); + } + } }