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

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.
主站蜘蛛池模板: 彰武县| 万年县| 清流县| 道真| 香港| 大庆市| 连山| 灵川县| 永康市| 桑日县| 遂平县| 昭苏县| 呼伦贝尔市| 滨州市| 庐江县| 太仓市| 定远县| 剑川县| 高青县| 尉犁县| 大理市| 班戈县| 大同县| 隆安县| 菏泽市| 府谷县| 盐山县| 治多县| 高雄县| 理塘县| 大港区| 班戈县| 永靖县| 措勤县| 无棣县| 彭泽县| 义乌市| 兴国县| 康保县| 阿尔山市| 哈尔滨市|