lastValueFrom
function
stable
Converts an observable to a promise by subscribing to the observable, waiting for it to complete, and resolving the returned promise with the last value from the observed stream.
lastValueFrom<T, D>(source: Observable<T>, config?: LastValueFromConfig<D>): Promise<T | D>
Parameters
source | the observable to convert to a promise |
config | Optional. Default is a configuration object to define the |
Returns
Promise<T | D>
Description
If the observable stream completes before any values were emitted, the returned promise will reject with EmptyError
or will resolve with the default value if a default was specified.
If the observable stream emits an error, the returned promise will reject with that error.
WARNING: Only use this with observables you know will complete. If the source observable does not complete, you will end up with a promise that is hung up, and potentially all of the state of an async function hanging out in memory. To avoid this situation, look into adding something like timeout
, take
, takeWhile
, or takeUntil
amongst others.
Example
Wait for the last value from a stream and emit it from a promise in an async function.
import { interval, lastValueFrom } from 'rxjs'; import { take } from 'rxjs/operators'; async function execute() { const source$ = interval(2000).pipe(take(10)); const finalNumber = await lastValueFrom(source$); console.log(`The final number is ${finalNumber}`); } execute(); // Expected output: // "The final number is 9"
See Also
© 2015–2021 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors.
Code licensed under an Apache-2.0 License. Documentation licensed under CC BY 4.0.
https://rxjs.dev/api/index/function/lastValueFrom