有没有办法重复完成一个可观察的多次?
说我有一个按钮,单击该按钮可创建一个可观察的间隔,该间隔发出10个值,然后完成:
fromEvent(button, 'click').pipe(
switchMapTo(interval(500)),
takeWhile(i => i < 10)
)
在订阅中,我要处理下一个和完整的方法:
.subscribe(
i => console.log(i),
() => {},
() => console.log('completed')
);
通过这种方式-第一次点击将发出一个序列,一旦完成,后续的点击将不再发出。有什么办法写这个,使所有的点击都发出序列?
答案 0 :(得分:1)
我认为您应该完成内部可观察到的而不是整个序列。 (takeWhile应通过管道传递到interval);
仅当您愿意在新的点击事件出现后就退出旧序列时才应使用switchMap
。否则mergeMap
或concatMap
。
const sequence = () => interval(500).pipe(take(10));
fromEvent(button, 'click').pipe(
switchMap(sequence),
)