Create one-time subscription

Berkeley Martinez picture Berkeley Martinez · Jan 18, 2015 · Viewed 86.7k times · Source

I need to create a subscription to an Observable that is immediately disposed of when it is first called.

Is there something like:

observable.subscribeOnce(func);

My use case, I am creating a subscription in an express route handler and the subscription is being called multiple times per request.

Answer

Brandon picture Brandon · Jan 19, 2015

Not 100% certain about what you need, but if you only want to observe the first value, then use either first() or take(1):

observable.first().subscribe(func);

note: .take(1) and .first() both unsubscribe automatically when their condition is met

Update from RxJS 5.5+

From comment by Coderer.

import { first } from 'rxjs/operators'

observable
  .pipe(first())
  .subscribe(func);

Here's why