W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
在預訂時確定將實際預訂 Observable 的時間。
iif<T = never, F = never>(condition: () => boolean, trueResult: SubscribableOrPromise
<T> = EMPTY, falseResult: SubscribableOrPromise
<F> = EMPTY): Observable
<T | F>
condition | 應該選擇可觀察的條件。 |
---|---|
trueResult | 可選的。默認值為EMPTY 。類型:。SubscribableOrPromise |
錯誤結果 | 可選的。默認值為EMPTY 。類型:。SubscribableOrPromise |
Observable<T | F>
:根據情況,第一個或第二個可觀察值。
If
Observables的聲明。
iif
接受條件函數和兩個 Observable。訂閱操作員返回的Observable時,將調用條件函數。根據此時返回的布爾值,使用者將訂閱第一個 Observable(如果條件為 true)或第二個(如果條件為 false)。條件函數也可能不返回任何內容-在這種情況下,條件將被評估為 false,第二個 Observable 將被訂閱。
請注意,兩種情況(true 和 false)的 Observables 是可選的。如果條件指向未定義的 Observable,則結果流將立即立即完成。這樣,您可以在運行時確定使用者是否應有權訪問給定的 Observable,而不是控制將訂閱哪個 Observable。
如果您具有更復雜的邏輯,需要在兩個以上的 Observable 之間進行決策,defer
則可能是一個更好的選擇。實際上,iif
可以方便地實現,defer
并且僅出于方便和易讀性的原因而存在。
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"
let accessGranted;
const observableIfYouHaveAccess = iif(
() => accessGranted,
of('It seems you have an access...'), // Note that only one Observable is passed to the operator.
);
accessGranted = true;
observableIfYouHaveAccess.subscribe(
value => console.log(value),
err => {},
() => console.log('The end'),
);
// Logs:
// "It seems you have an access..."
// "The end"
accessGranted = false;
observableIfYouHaveAccess.subscribe(
value => console.log(value),
err => {},
() => console.log('The end'),
);
// Logs:
// "The end"
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: