timer(dueTime: number | Date = 0, intervalOrScheduler?: number | SchedulerLike, scheduler: SchedulerLike = asyncScheduler): Observable<number>
dueTime:number | Date
可选参数. 默认值是 0
.
intervalOrScheduler: number | SchedulerLike
可选参数. 默认值是 undefined
.
scheduler: SchedulerLike
可选参数. 默认值是 asyncScheduler
.
Observable<number>
。
创建一个可观察对象,该对象将等待指定的时间段或确切日期,然后再发出数字 0。
timer(due: number | Date, scheduler?: SchedulerLike): Observable<0>
- due number | Date
如果是数字,则在发射之前等待的时间量(以毫秒为单位)。如果是日期,则发送的确切时间。
- scheduler SchedulerLike
可选参数. 默认值是 undefined
. 用于调度延迟的调度程序。默认为 asyncScheduler。
等待 3 秒,然后启动另一个可观察的
您可能希望使用计时器将对可观察对象的订阅延迟设置的时间量。在这里,我们使用带有 concatMapTo 或 concatMap 的计时器,以便等待几秒钟并开始对源的订阅。
import { of, timer, concatMap } from 'rxjs';
// This could be any observable
const source = of(1, 2, 3);
timer(3000)
.pipe(concatMap(() => source))
.subscribe(console.log);
取所有值,直到下一分钟开始
使用日期作为第一次发射的触发器,您可以执行一些操作,比如等到午夜触发事件,或者在这种情况下,等到新的一分钟开始(选择这样示例就不会花费太长时间运行),以便停止观看流。利用采取 takeUntil
。
import { interval, takeUntil, timer } from 'rxjs';
// Build a Date object that marks the
// next minute.
const currentDate = new Date();
const startOfNextMinute = new Date(
currentDate.getFullYear(),
currentDate.getMonth(),
currentDate.getDate(),
currentDate.getHours(),
currentDate.getMinutes() + 1
);
// This could be any observable stream
const source = interval(1000);
const result = source.pipe(
takeUntil(timer(startOfNextMinute))
);
result.subscribe(console.log);
timer(startDue: number | Date, intervalDuration: number, scheduler?: SchedulerLike): Observable<number>
开始一个马上开始的间隔 由于间隔在开始之前等待经过的延迟,有时这并不理想。您可能需要立即开始一个间隔。计时器对此工作很好。在这里,我们有两个并排的,所以你可以看到它们的比较。
请注意,此可观察对象永远不会完成。
import { timer, interval } from 'rxjs';
timer(0, 1000).subscribe(n => console.log('timer', n));
interval(1000).subscribe(n => console.log('interval', n));