firstValueFrom
function
stable
Converts an observable to a promise by subscribing to the observable, and returning a promise that will resolve as soon as the first value arrives from the observable. The subscription will then be closed.
firstValueFrom<T, D>(source: Observable<T>, config?: FirstValueFromConfig<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 emit at least one value, OR complete. If the source observable does not emit one value or 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 first value from a stream and emit it from a promise in an async function.
import { interval, firstValueFrom } from 'rxjs'; async function execute() { const source$ = interval(2000); const firstNumber = await firstValueFrom(source$); console.log(`The first number is ${firstNumber}`); } execute(); // Expected output: // "The first number is 0"
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/firstValueFrom