W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
創(chuàng)建一個(gè) Observable,在訂閱時(shí),該 Observable 調(diào)用一個(gè) Observable 工廠(chǎng)以為每個(gè)新的 Observer 創(chuàng)建 Observable。
defer<R extends ObservableInput<any> | void>(observableFactory: () => R): Observable<ObservedValueOf<R>>
observableFactory | Observable 工廠(chǎng)函數(shù),用于為預(yù)訂輸出 Observable 的每個(gè) Observer 調(diào)用。也可能會(huì)返回一個(gè) Promise,它將即時(shí)轉(zhuǎn)換為 Observable。 |
---|---|
Observable<ObservedValueOf<R>>
:一個(gè) Observable,其 Observers 的訂閱觸發(fā)對(duì)給定 Observable 工廠(chǎng)函數(shù)的調(diào)用。
延遲創(chuàng)建 Observable,即僅在訂閱時(shí)創(chuàng)建。
defer
允許您僅在觀(guān)察者訂閱時(shí)創(chuàng)建觀(guān)察者,并為每個(gè)觀(guān)察者創(chuàng)建一個(gè)新的觀(guān)察者。它等待,直到觀(guān)察者訂閱它,然后它生成一個(gè)觀(guān)察者,通常帶有觀(guān)察者工廠(chǎng)功能。它為每個(gè)訂閱用戶(hù)重新進(jìn)行此操作,因此盡管每個(gè)訂閱用戶(hù)可能認(rèn)為自己正在訂閱相同的 Observable,但實(shí)際上每個(gè)訂閱用戶(hù)都擁有自己的個(gè)人 Observable。
import { defer, fromEvent, interval } from 'rxjs';
const clicksOrInterval = defer(function () {
return Math.random() > 0.5
? fromEvent(document, 'click')
: interval(1000);
});
clicksOrInterval.subscribe(x => console.log(x));
// Results in the following behavior:
// If the result of Math.random() is greater than 0.5 it will listen
// for clicks anywhere on the "document"; when document is clicked it
// will log a MouseEvent object to the console. If the result is less
// than 0.5 it will emit ascending numbers, one every second(1000ms).
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: