Angular 2可重启计时器 [英] Angular 2 reSTARTable timer

查看:69
本文介绍了Angular 2可重启计时器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我到处都看过,但是我找不到如何使用Observable或SimpleTimer创建计时器的解决方案,可以从特定值重新启动它.我尝试取消订阅,然后再订阅,但这不会从头开始,而且我也不能使用 this.timer = new Observable.timer(...); 有人可以帮我吗?

I've looked everywhere, but I just can't find a solution on how to create a timer with Observable, or SimpleTimer, which I can restart from a specific value. I tried unsubscribing, and then subscribing, but it won't start from the beginning, and neither can I use this.timer = new Observable.timer(...); Can anyone help me with this, please?

谢谢!

推荐答案

例如,您可以使用 switchMap():

const timerControl$ = new Subject<any>();
const timer$ = timerControl$.switchMap(() => Observable.timer(0, 1000));

timer$.subscribe(i => console.log(i));

// start timer
timerControl$.next();

// re-start timer
timerControl$.next();

这是还可以停止计时器的版本:

Here is the version which can also stop the timer:

const timerControl$ = new Subject<number>();
const timer$ = timerControl$.switchMap(
    period => period ? Observable.timer(0, period) : Observable.empty()
);

timer$.subscribe(i => console.log(i));

// start timer
timerControl$.next(1000);

// re-start timer with different period
timerControl$.next(500);

// stop timer
timerControl$.next(0);

这篇关于Angular 2可重启计时器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆