💡 If you want to start with a value instead, check out startWith
!
💡 If you want to perform an action on completion, but do not want to emit a value, check out finalize
!
Example 1: Basic endWith example
( StackBlitz )
// RxJS v6+import { endWith } from 'rxjs/operators';import { of } from 'rxjs';const source$ = of('Hello', 'Friend', 'Goodbye');source$// emit on completion.pipe(endWith('Friend'))// 'Hello', 'Friend', 'Goodbye', 'Friend'.subscribe(console.log(val));
Example 2: endWith multiple values
( StackBlitz )
// RxJS v6+import { endWith } from 'rxjs/operators';import { of } from 'rxjs';const source$ = of('Hello', 'Friend');source$// emit on completion.pipe(endWith('Goodbye', 'Friend'))// 'Hello', 'Friend', 'Goodbye', 'Friend'.subscribe(console.log(val));
Example 3: Comparison to finalize
( StackBlitz )
// RxJS v6+import { endWith, finalize } from 'rxjs/operators';import { of } from 'rxjs';const source$ = of('Hello', 'Friend');source$// emit on completion.pipe(endWith('Goodbye', 'Friend'),// this function is invoked when unsubscribe methods are calledfinalize(() => console.log('Finally')))// 'Hello', 'Friend', 'Goodbye', 'Friend'.subscribe(val => console.log(val));// 'Finally'
endWith 📰 - Official docs
📁 Source Code: https://github.com/ReactiveX/rxjs/blob/master/src/internal/operators/endWith.ts