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 ...