W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
使 ConnectableObservable
行為像普通的可觀察對(duì)象,并自動(dòng)連接它。
refCount<T>(): MonoTypeOperatorFunction
<T>
沒有參數(shù)。
MonoTypeOperatorFunction<T>
在內(nèi)部,它計(jì)算對(duì)可觀察對(duì)象的訂閱,如果訂閱數(shù)大于0,則訂閱源(僅一次)。如果訂閱數(shù)小于1,則取消訂閱源。這樣,您可以確保發(fā)布的 refCount 之前的所有內(nèi)容僅具有單個(gè)訂閱,而與目標(biāo)可觀察者的訂閱者數(shù)量無關(guān)。
請(qǐng)注意,使用 share
運(yùn)算符與按順序使用 publish 運(yùn)算符(使可觀察的熱點(diǎn))和 refCount 運(yùn)算符完全相同。
在下面的示例中,使用 publish 運(yùn)算符將兩個(gè)間隔變?yōu)榭蛇B接的可觀察對(duì)象。第一個(gè)使用 refCount 運(yùn)算符,第二個(gè)不使用它。您會(huì)注意到,可連接可觀察對(duì)象在調(diào)用其連接函數(shù)之前不會(huì)執(zhí)行任何操作。
import { interval } from 'rxjs';
import { tap, publish, refCount } from 'rxjs/operators';
// Turn the interval observable into a ConnectableObservable (hot)
const refCountInterval = interval(400).pipe(
tap((num) => console.log(`refCount ${num}`)),
publish(),
refCount()
);
const publishedInterval = interval(400).pipe(
tap((num) => console.log(`publish ${num}`)),
publish()
);
refCountInterval.subscribe();
refCountInterval.subscribe();
// 'refCount 0' -----> 'refCount 1' -----> etc
// All subscriptions will receive the same value and the tap (and
// every other operator) before the publish operator will be executed
// only once per event independently of the number of subscriptions.
publishedInterval.subscribe();
// Nothing happens until you call .connect() on the observable.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: