rxjs 单播 多播

原创
2022/08/12 18:41
阅读数 32

单播:

import { interval, map, take } from "rxjs";

let a = interval(1000).pipe(take(4), map(() => new Date()))

a.subscribe((val)=>console.log("#1",val))
a.subscribe((val)=>console.log("#2",val))
a.subscribe((val)=>console.log("#3",val))
#1 2022-08-12T09:00:29.682Z
#2 2022-08-12T09:00:29.687Z
#3 2022-08-12T09:00:29.687Z
#1 2022-08-12T09:00:30.682Z
#2 2022-08-12T09:00:30.688Z
#3 2022-08-12T09:00:30.688Z
#1 2022-08-12T09:00:31.683Z
#2 2022-08-12T09:00:31.688Z
#3 2022-08-12T09:00:31.688Z
#1 2022-08-12T09:00:32.684Z
#2 2022-08-12T09:00:32.689Z
#3 2022-08-12T09:00:32.689Z

多播

import { interval, map, Subject, take } from "rxjs";

let s=new Subject()
let a = interval(1000).pipe(take(4), map(() => new Date())).subscribe(s)

s.subscribe((val)=>console.log("#1",val))
s.subscribe((val)=>console.log("#2",val))
s.subscribe((val)=>console.log("#3",val))
#1 2022-08-12T09:21:48.820Z
#2 2022-08-12T09:21:48.820Z
#3 2022-08-12T09:21:48.820Z
#1 2022-08-12T09:21:49.820Z
#2 2022-08-12T09:21:49.820Z
#3 2022-08-12T09:21:49.820Z
#1 2022-08-12T09:21:50.821Z
#2 2022-08-12T09:21:50.821Z
#3 2022-08-12T09:21:50.821Z
#1 2022-08-12T09:21:51.822Z
#2 2022-08-12T09:21:51.822Z
#3 2022-08-12T09:21:51.822Z

操作符

case1:

import { connectable, interval, map, Subject, take } from "rxjs";

let a = connectable(interval(1000).pipe(take(4), map(() => new Date())), {
    connector: () => new Subject()
})

a.subscribe((val) => console.log("#1", val))
a.subscribe((val) => console.log("#2", val))
a.subscribe((val) => console.log("#3", val))

a.connect()
#1 2022-08-12T09:33:07.135Z
#2 2022-08-12T09:33:07.135Z
#3 2022-08-12T09:33:07.135Z
#1 2022-08-12T09:33:08.136Z
#2 2022-08-12T09:33:08.136Z
#3 2022-08-12T09:33:08.136Z
#1 2022-08-12T09:33:09.138Z
#2 2022-08-12T09:33:09.138Z
#3 2022-08-12T09:33:09.138Z
#1 2022-08-12T09:33:10.138Z
#2 2022-08-12T09:33:10.138Z
#3 2022-08-12T09:33:10.138Z

case2:

import { interval, map, take, share } from "rxjs";


let a = interval(1000).pipe(take(4), map(() => new Date()), share({
    resetOnError: false,
    resetOnComplete: false,
    resetOnRefCountZero: false
}))

a.subscribe((val) => console.log("#1", val))
a.subscribe((val) => console.log("#2", val))
a.subscribe((val) => console.log("#3", val))
#1 2022-08-12T12:15:02.895Z
#2 2022-08-12T12:15:02.895Z
#3 2022-08-12T12:15:02.895Z
#1 2022-08-12T12:15:03.896Z
#2 2022-08-12T12:15:03.896Z
#3 2022-08-12T12:15:03.896Z
#1 2022-08-12T12:15:04.897Z
#2 2022-08-12T12:15:04.897Z
#3 2022-08-12T12:15:04.897Z
#1 2022-08-12T12:15:05.898Z
#2 2022-08-12T12:15:05.898Z
#3 2022-08-12T12:15:05.898Z

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部