Angular 如何知道工作何时完成
我需要在“takeUntil”工作时执行最后一个操作,然后进一步发送数据,但我无法确切知道takeUntil何时完成工作。 谢谢大家Angular 如何知道工作何时完成,angular,rxjs,reactive-programming,Angular,Rxjs,Reactive Programming,我需要在“takeUntil”工作时执行最后一个操作,然后进一步发送数据,但我无法确切知道takeUntil何时完成工作。 谢谢大家 ngOnInit(): void { const thumb = document.getElementById("thumb"); const track: HTMLElement = document.getElementById("track"); const activeTrack = document.getElementBy
ngOnInit(): void {
const thumb = document.getElementById("thumb");
const track: HTMLElement = document.getElementById("track");
const activeTrack = document.getElementById("active-track");
const mouseUp = fromEvent(document, "mouseup");
const mouseMove = fromEvent(document, "mousemove").pipe(
map((item) => this.mouseEventToCoordinate(item, track))
);
const activeTrackClick = fromEvent(activeTrack, "click").pipe(
map((item) => this.mouseEventToCoordinate(item, track))
);
const trackClick = fromEvent(track, "click").pipe(
map((item) => this.mouseEventToCoordinate(item, track))
);
const mouseDown = fromEvent(thumb, "mousedown");
mouseDown
.pipe(
switchMap(() => mouseMove),
merge(trackClick, activeTrackClick),
takeUntil(mouseUp),
repeat()
)
.subscribe((item: { trackWidth: number; position: number }) => {
const newX = (item.position / item.trackWidth) * 100;
activeTrack.style.width = (newX + 1).toString() + "%";
thumb.style.left = newX.toString() + "%";
if (item === "Done") {
// Do somethings
}
});
}
takeUntil
在此之前完成源观测。这意味着我们可以利用完成<代码>重复再次启动已完成的观察。所以我们可以这样做:
mouseDown
.pipe(
switchMap(() => mouseMove),
merge(trackClick, activeTrackClick),
takeUntil(mouseUp),
tap({ complete: () => doSomething() }), // This will execute when mouseUp emits and takeUntil completes source Observable
repeat(),
)
...
takeUntil
在此之前完成源观测。这意味着我们可以利用完成<代码>重复再次启动已完成的观察。所以我们可以这样做:
mouseDown
.pipe(
switchMap(() => mouseMove),
merge(trackClick, activeTrackClick),
takeUntil(mouseUp),
tap({ complete: () => doSomething() }), // This will execute when mouseUp emits and takeUntil completes source Observable
repeat(),
)
...
所以基本上你需要在鼠标上做点什么?那么基本上你需要在鼠标上做点什么?