带有手动触发器的FIFO队列



我有一个通知流(源a(,但我只想一次向用户显示一个通知。当用户解除上一个(手动触发B(时,将显示下一个通知

所以我需要一个类似于observable的FIFO队列,当另一个手动触发的observable发出时,它只发出第一个项目。类似这样的东西:

A (data)    -> 'item1', ....., 'item2', ....., 'item3' .....
B (trigger) -> .........., trigger, ......, trigger, .....
expected output ->........., 'item 1', ...., 'item2' .....

尝试zip。它适用于我的一个简单的例子:

private triggerSubject = new BehaviorSubject<boolean>(false);
trigger$ = this.triggerSubject.asObservable();
data$ = from(sampleData);
// Only emit items from the first stream (data$)
// when the second stream emits (trigger$)
action$ = zip(
this.data$,
this.trigger$.pipe(filter(value => Boolean(value)))
).pipe(
// Only emit the item (not the trigger)
map(([item, trigger]) => item)
);
doAction(): void {
this.triggerSubject.next(true);
}

这将输出每个触发器操作的下一个项目(在我的示例中是单击按钮(。

最新更新