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

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.
主站蜘蛛池模板: 松原市| 巨鹿县| 梁河县| 长葛市| 通江县| 兰考县| 浦县| 永福县| 忻城县| 来安县| 巨野县| 福安市| 沙田区| 洛南县| 会同县| 灌云县| 哈密市| 芜湖市| 司法| 兴山县| 云林县| 无锡市| 依兰县| 梓潼县| 页游| 明水县| 叙永县| 仪征市| 长沙县| 尼木县| 河曲县| 福鼎市| 栾川县| 石渠县| 裕民县| 伊金霍洛旗| 塔城市| 防城港市| 镇原县| 竹北市| 大连市|