【问题标题】:Filter observable until mapped observable finishes过滤 observable 直到映射 observable 完成
【发布时间】:2018-11-20 19:20:01
【问题描述】:

我拥有的是这样的:

var click = fromEvent(button, 'click');

var animation = from([]).pipe(
    concat(
        animateDiv(300, 600),
        animateDiv(-300, 600),
        animateDiv( 300, 300),
        animateDiv(-300, 300)
    ));

click.pipe(
    flatMap(() => animation),
).subscribe();

每个 animateDiv() 返回一个 Observable,一旦动画完成,它就会完成。使用“concat()”我将它们链接在一起。

所以现在我不想在“点击”时启动另一个动画,而另一个动画链仍在运行......

实现这一目标的最佳方法是什么?

【问题讨论】:

  • 尝试使用exaustMapconcatMap 代替flatMap。第一个将忽略所有发出的点击事件,直到运行动画完成。后者不会松开任何点击,而是会一个接一个地连接所有动画

标签: rxjs


【解决方案1】:

找到解决方案:audit

var animation = concat(
    animateDiv(300, 600),
    animateDiv(-300, 600),
    animateDiv(300, 300),
    animateDiv(-300, 400),
);

click.pipe(
    audit(() => animation)
).subscribe();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-17
    • 2015-08-27
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多