import { iif } from "https://deno.land/x/rxjs@v1.0.2/mod.ts";
Checks a boolean at subscription time, and chooses between one of two observable sources
iif
expects a function that returns a boolean (the condition
function), and two sources,
the trueResult
and the falseResult
, and returns an Observable.
At the moment of subscription, the condition
function is called. If the result is true
, the
subscription will be to the source passed as the trueResult
, otherwise, the subscription will be
to the source passed as the falseResult
.
If you need to check more than two options to choose between more than one observable, have a look at the defer creation method.
Examples
Change at runtime which Observable will be subscribed
import { iif, of } from 'rxjs';
let subscribeToFirst;
const firstOrSecond = iif(
() => subscribeToFirst,
of('first'),
of('second')
);
subscribeToFirst = true;
firstOrSecond.subscribe(value => console.log(value));
// Logs:
// 'first'
subscribeToFirst = false;
firstOrSecond.subscribe(value => console.log(value));
// Logs:
// 'second'
Control access to an Observable
import { iif, of, EMPTY } from 'rxjs';
let accessGranted;
const observableIfYouHaveAccess = iif(
() => accessGranted,
of('It seems you have an access...'),
EMPTY
);
accessGranted = true;
observableIfYouHaveAccess.subscribe({
next: value => console.log(value),
complete: () => console.log('The end')
});
// Logs:
// 'It seems you have an access...'
// 'The end'
accessGranted = false;
observableIfYouHaveAccess.subscribe({
next: value => console.log(value),
complete: () => console.log('The end')
});
// Logs:
// 'The end'
Returns
An observable that proxies to trueResult
or falseResult
, depending on the result of the condition
function.