官术网_书友最值得收藏!

The repeat operator

The repeat operator allows for repeating the emission of an item or a sequence. The marble diagram of the repeat operator is shown in the following figure:

Figure 4.4: The repeat operator

This operator has two prototypes, as follows:

Observable.repeat(value=None, repeat_count=None, scheduler=None)
Observable.repeat(self, repeat_count=None)

The first implementation is a static class method. It can be used to create an observable that repeats value items for repeat_count times. If the value is not set, items with a None value are emitted. The second implementation is a method that repeats its source observable for repeat_count times. In both methods, the repeat_count argument is optional. When repeat_count is not set, the repetition is infinite. If the repeat_count is less than one, then no items are emitted.

The first variant of the implementation can be used in the following way:

ones = Observable.repeat(1, 5)
ones.subscribe(
on_next=lambda i: print("item: {}".format(i)),
on_error=lambda e: print("error: {}".format(e)),
on_completed=lambda: print("completed")
)

The preceding code will provide the following output:

item: 1
item: 1
item: 1
item: 1
item: 1
completed

The second variant is used in a chain of operators, like in the following simple example:

numbers = Observable.from_([1,2,3])
numbers.repeat(3).subscribe(
on_next=lambda i: print("item: {}".format(i)),
on_error=lambda e: print("error: {}".format(e)),
on_completed=lambda: print("completed")
)

First, the numbers observable is created. Upon subscription, it emits the sequence 1, 2, 3. This sequence is then repeated three times. This provides the following result:

item: 1
item: 2
item: 3
item: 1
item: 2
item: 3
item: 1
item: 2
item: 3
completed
In this case, the whole sequence is repeated, and not each item of the source observable. Repeating each item of an observable can be done by combining the static variant of the repeat operator with the flat_map operator. The flat_map operator will be discussed in Chapter 5,   Concurrency and Parallelism in RxPY.
主站蜘蛛池模板: 郯城县| 平山县| 蒙阴县| 深圳市| 固原市| 拜城县| 鄱阳县| 叶城县| 德化县| 荔波县| 原阳县| 甘泉县| 石台县| 托里县| 大田县| 平昌县| 黄山市| 玉林市| 高清| 汕头市| 定安县| 长治县| 德兴市| 永丰县| 揭东县| 九龙城区| 芒康县| 通辽市| 清水河县| 霞浦县| 郓城县| 阿拉尔市| 江川县| 江门市| 随州市| 招远市| 虹口区| 梁山县| 汾西县| 睢宁县| 航空|