Hands-On Reactive Programming with Python
上QQ阅读APP看书,第一时间看更新

The interval operator

In cases in which some items must be emitted at a fixed interval, the interval operator can be used instead of the timer operator. Its behavior is the same as the timer operator, wherein the same value is provided in duetime, a period parameter. This is how it is implemented. Its marble diagram is shown in the following figure:

Figure 4.9: The interval operator

Its prototype is as follows:

Observable.interval(period, scheduler=None)

The period parameter is the value, in milliseconds, of the period of item emission. This operator can be used as follows:

import datetime

ticks = Observable.interval(1000)
ticks.subscribe(
on_next=lambda i: print("tick {} at {}".format(
i, datetime.datetime.now())),
on_error=lambda e: print("error: {}".format(e)),
on_completed=lambda: print("completed")
)

The preceding example provides the same results as the second example of the timer operator, as follows:

tick 0 at 2018-06-23 22:07:32.488799
tick 1 at 2018-06-23 22:07:33.491213
tick 2 at 2018-06-23 22:07:34.493068
tick 3 at 2018-06-23 22:07:35.495030
tick 4 at 2018-06-23 22:07:36.500543
...