加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

RxJS--Subject

发布时间:2020-12-17 10:39:18 所属栏目:安全 来源:网络整理
导读:Subject是Observable(可观察对象)的子类,subject是多播的,允许将值多播给多个observer(观察者),普通observable是单播。 每一个Subject都是一个Observable(可观察对象),可以订阅(subscribe)它。 要给subject提供新值,只要调用next(theValue),它会将值the

Subject是Observable(可观察对象)的子类,subject是多播的,允许将值多播给多个observer(观察者),普通observable是单播。

每一个Subject都是一个Observable(可观察对象),可以订阅(subscribe)它。

要给subject提供新值,只要调用next(theValue),它会将值theValue多播给已注册监听该subject的观察者们。

import {Component,OnInit} ngOnInit(){
<span style="color: #0000ff">const
subject: Subject<<span style="color: #0000ff">string
> = <span style="color: #0000ff">new
Subject<<span style="color: #0000ff">string
><span style="color: #000000">();

</span><span style="color: #0000ff"&gt;const</span> subscriptionA: Subscription =<span style="color: #000000"&gt; subject.subscribe(
    (val: </span><span style="color: #0000ff"&gt;string</span>) =><span style="color: #000000"&gt; {console.log(`observerA: $(val)`)};
);

</span><span style="color: #0000ff"&gt;const</span> subscriptionB: Subscription =<span style="color: #000000"&gt; subject.subscribe(
    (val: </span><span style="color: #0000ff"&gt;string</span>) =><span style="color: #000000"&gt; {console.log(`observerB: $(val)`)};
);

subject.next(</span><span style="color: #800000"&gt;'</span><span style="color: #800000"&gt;博客</span><span style="color: #800000"&gt;'</span><span style="color: #000000"&gt;);
subject.next(</span><span style="color: #800000"&gt;'</span><span style="color: #800000"&gt;圆圆</span><span style="color: #800000"&gt;'</span><span style="color: #000000"&gt;);
subscriptionA.unsubscribe();    </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;取消订阅</span>
subscriptionB.unsubscribe();    <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;取消订阅</span>
subject.next(<span style="color: #800000"&gt;'</span><span style="color: #800000"&gt;取消订阅后</span><span style="color: #800000"&gt;'</span><span style="color: #000000"&gt;);
subject.complete();

}

每一个Subject也可以作为Observer(观察者),有如下方法:next(v),error(e), complete(); 可以把Subject作为参数传递给任何Observable的subscribe方法

import { Subject,Subscription,Observable} ngOnInit() {
<span style="color: #0000ff">const
subject: Subject<<span style="color: #0000ff">string
> = <span style="color: #0000ff">new
Subject<<span style="color: #0000ff">string
><span style="color: #000000">();
<span style="color: #0000ff">const subscriptionA: Subscription =<span style="color: #000000"> subject.subscribe(
(val: <span style="color: #0000ff">string) =><span style="color: #000000"> {
console.log(observerA: ${val});
}
);
<span style="color: #0000ff">const subscriptionB: Subscription =<span style="color: #000000"> subject.subscribe(
(val: <span style="color: #0000ff">string) =><span style="color: #000000"> {
console.log(observerB: ${val});
}
);

</span><span style="color: #0000ff"&gt;const</span> observable: Observable<<span style="color: #0000ff"&gt;string</span>> = <span style="color: #0000ff"&gt;from</span>([<span style="color: #800000"&gt;'</span><span style="color: #800000"&gt;Raph</span><span style="color: #800000"&gt;'</span>,<span style="color: #800000"&gt;'</span><span style="color: #800000"&gt;Don</span><span style="color: #800000"&gt;'</span><span style="color: #000000"&gt;]);
observable.subscribe(subject);

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读