gpt4 book ai didi

RxJS (5.0rc4) : Pause and resume an interval timer

转载 作者:行者123 更新时间:2023-12-04 18:29:40 24 4
gpt4 key购买 nike

我正在使用 Rx 来保持动画时钟。每个动画帧,它将间隔刻度映射到该刻度的新值。

假设我想暂停动画。最自然的方法是以某种方式暂停时钟 rx,然后在稍后恢复它。

取消订阅然后重新订阅不是一个自然的选择,因为这个动画时钟是一个冷的可观察对象。我不想在它们恢复时重新启动动画。如果我寻求一种变通方法,我将不得不生成一个新的简历 rx,这使所有公开的 API 变得非常复杂。

背压方法似乎没有希望:
pause不起作用,因为我想从上次中断的地方继续,而不是向前跳。换句话说,我不想在它关闭时丢弃滴答声。
pausableBuffered不起作用,因为在恢复时,它会尽可能快地耗尽所有累积的滴答声。

使用某种虚拟时间调度程序来完全停止时间然后恢复正常时间可能是可能的(?)

我在 RxJS 5.0rc4 上,但我也不知道如何在 RxJS 4 上执行此操作。任何版本的任何建议将不胜感激。

最佳答案

使用 switchMappauser流在原始来源和 Observable.never 之间进行选择.如果您不想让计时器向前跳,请自行管理(使用下面的 x 变量)。

function pausableInterval(ms, pauser) {
let x = 0;
const source = IntervalObservable.create(ms);

return pauser.switchMap(
paused => paused ?
Observable.never() :
source.map(() => x++)
);
}
pauser流应该发出 bool 值。
未测试。

关于RxJS (5.0rc4) : Pause and resume an interval timer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com