如何阅读 RxJs mergeMap 弹珠图
How to read the RxJs mergeMap marble diagram
在这个 mergeMap
的弹珠图中,你怎么读这个表达式?
// Kind of, looks like an em-dash near the end
mergeMap(i => 10*i--10*i--10*i--|)
mergeMap
将 i
映射到由字符串 10*i--10*i--10*i-|
表示的可观察对象。此字符串包含 marble syntax 表示在虚拟时间内发生的事件。
文档中使用的主要字符是:
-
frame: 1 "frame" of virtual time passing
[a-z0-9]
any alphanumeric character: Represents a value being emitted by the producer signaling next()
.
|
complete: The successful completion of an observable. This is the observable producer signaling complete()
.
#
error: An error terminating the observable. This is the observable producer signaling error()
.
所以 10--10--10-|
将是图片中第二个可观察值的表达式。
例如
const tens$ = timer(0, 4).pipe(take(3), mapTo(10))
10*i--10*i--10*i-|
是将 10--10--10-|
发出的每个值与 i
相乘时得到的可观察值的表达式。
例如
of(1,3,5).pipe(
mergeMap(i => tens$.pipe(map(v => v*i)))
)
在这个 mergeMap
的弹珠图中,你怎么读这个表达式?
// Kind of, looks like an em-dash near the end
mergeMap(i => 10*i--10*i--10*i--|)
mergeMap
将 i
映射到由字符串 10*i--10*i--10*i-|
表示的可观察对象。此字符串包含 marble syntax 表示在虚拟时间内发生的事件。
文档中使用的主要字符是:
-
frame: 1 "frame" of virtual time passing[a-z0-9]
any alphanumeric character: Represents a value being emitted by the producer signalingnext()
.|
complete: The successful completion of an observable. This is the observable producer signalingcomplete()
.#
error: An error terminating the observable. This is the observable producer signalingerror()
.
所以 10--10--10-|
将是图片中第二个可观察值的表达式。
例如
const tens$ = timer(0, 4).pipe(take(3), mapTo(10))
10*i--10*i--10*i-|
是将 10--10--10-|
发出的每个值与 i
相乘时得到的可观察值的表达式。
例如
of(1,3,5).pipe(
mergeMap(i => tens$.pipe(map(v => v*i)))
)