From 015c6a686d2d17f140b6417ef068c3c6cd8f327d Mon Sep 17 00:00:00 2001 From: JoostK Date: Sun, 16 Aug 2020 13:17:06 +0200 Subject: [PATCH] fix(@angular-devkit/core): avoid RxJS performance penalty in sync fs calls --- .../angular_devkit/core/src/virtual-fs/host/sync.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/angular_devkit/core/src/virtual-fs/host/sync.ts b/packages/angular_devkit/core/src/virtual-fs/host/sync.ts index d28097c69bf1..cbc8629081cc 100644 --- a/packages/angular_devkit/core/src/virtual-fs/host/sync.ts +++ b/packages/angular_devkit/core/src/virtual-fs/host/sync.ts @@ -37,11 +37,13 @@ export class SyncDelegateHost { let completed = false; let result: ResultT | undefined = undefined; let errorResult: Error | undefined = undefined; - observable.subscribe({ - next(x: ResultT) { result = x; }, - error(err: Error) { errorResult = err; }, - complete() { completed = true; }, - }); + // Perf note: this is not using an observer object to avoid a performance penalty in RxJS. + // See https://github.com/ReactiveX/rxjs/pull/5646 for details. + observable.subscribe( + (x: ResultT) => result = x, + (err: Error) => errorResult = err, + () => completed = true, + ); if (errorResult !== undefined) { throw errorResult;