BehaviorSubject<T>
介绍
BehaviorSubject<T>和ReplaySubject<T> 有些许相似:在BehaviorSubject<T>执行Subscribe操作时发布信息,但是BehaviorSubject<T>只会记得最后一次OnNext操作。如果BehaviorSubject<T>执行过OnCompleted操作,那么Subscribe操作无效。下面通过代码分析。
实例代码
public
class
Chapter3CodeSample1
:
MonoBehaviour
{
// Start is called before the first frame update
void
Start
(
)
{
BehaviorSubject
<
string
>
subject
=
new
BehaviorSubject
<
string
>
(
"a"
)
;
//没有subscriber
subject
.
OnNext
(
"b"
)
;
subject
.
OnNext
(
"c"
)
;
//打印最后一次发布的信息"c"
var
subscriber
=
subject
.
Subscribe
(
print
)
;
//subject已经拥有订阅者subscriber
//向subscriber推送信息
subject
.
OnNext
(
"d"
)
;
}
}
AsyncSubject<T>
介绍
AsyncSubject<T>的功能非常简单:AsyncSubject<T>执行OnNext操作时,将信息先储存起来,并且只会储存最后一个进入的信息,不会立刻向subscriber发送;当AsyncSubject<T>执OnCompleted操作时,AsyncSubject<T>向subscriber推送信息。
AsyncSubject<T>适合于这种操作:在进行推送后,需要立刻完成销毁。
下面通过代码分析。
实例代码
public
class
Chapter3CodeSample2
:
MonoBehaviour
{
// Start is called before the first frame update
void
Start
(
)
{
AsyncSubject
<
string
>
subject
=
new
AsyncSubject
<
string
>
(
)
;
var
subscriber
=
subject
.
Subscribe
(
print
)
;
subject
.
OnNext
(
"a"
)
;
subject
.
OnNext
(
"b"
)
;
subject
.
OnNext
(
"c"
)
;
//只记录了c
subject
.
OnCompleted
(
)
;
}
}
1143

被折叠的 条评论
为什么被折叠?



