单播:
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