Skip to main content
Go to Latest
method Observable.prototype.forEach
Re-export
import { Observable } from "https://deno.land/x/ldkit@v0.5.0/library/rxjs.ts";

Used as a NON-CANCELLABLE means of subscribing to an observable, for use with APIs that expect promises, like async/await. You cannot unsubscribe from this.

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

import { interval, take } from 'rxjs';

const source$ = interval(1000).pipe(take(4));

async function getTotal() {
  let total = 0;

  await source$.forEach(value => {
    total += value;
    console.log('observable -> ' + value);
  });

  return total;
}

getTotal().then(
  total => console.log('Total: ' + total)
);

// Expected:
// 'observable -> 0'
// 'observable -> 1'
// 'observable -> 2'
// 'observable -> 3'
// 'Total: 6'

Parameters

next: (value: T) => void

a handler for each value emitted by the observable

Returns

Promise<void>

a promise that either resolves on observable completion or rejects with the handled error

Parameters

next: (value: T) => void

a handler for each value emitted by the observable

promiseCtor: PromiseConstructorLike

a constructor function used to instantiate the Promise

Returns

Promise<void>

a promise that either resolves on observable completion or rejects with the handled error