RxPY - últimas atualizações de versão

Neste tutorial, estamos usando RxPY versão 3 e python versão 3.7.3. O funcionamento do RxPY versão 3 difere um pouco da versão anterior, ou seja, o RxPY versão 1.

Neste capítulo, vamos discutir as diferenças entre as 2 versões e as mudanças que precisam ser feitas no caso de você estar atualizando as versões Python e RxPY.

Observável em RxPY

Na versão 1 do RxPy, Observable era uma classe separada -

from rx import Observable

Para usar o Observable, você deve usá-lo da seguinte maneira -

Observable.of(1,2,3,4,5,6,7,8,9,10)

Na versão 3 do RxPy, o Observable faz parte diretamente do pacote rx.

Example

import rx
rx.of(1,2,3,4,5,6,7,8,9,10)

Operadores em RxPy

Na versão 1, o operador era métodos na classe Observable. Por exemplo, para fazer uso de operadores, temos que importar Observable conforme mostrado abaixo -

from rx import Observable

Os operadores são usados ​​como Observable.operator, por exemplo, conforme mostrado abaixo -

Observable.of(1,2,3,4,5,6,7,8,9,10)\
   .filter(lambda i: i %2 == 0) \
   .sum() \
   .subscribe(lambda x: print("Value is {0}".format(x)))

No caso do RxPY versão 3, os operadores funcionam, são importados e usados ​​da seguinte forma -

import rx
from rx import operators as ops
rx.of(1,2,3,4,5,6,7,8,9,10).pipe(
   ops.filter(lambda i: i %2 == 0),
   ops.sum()
).subscribe(lambda x: print("Value is {0}".format(x)))

Operadores de encadeamento usando o método Pipe ()

Na versão 1 do RxPy, caso você tivesse que usar vários operadores em um observável, isso tinha que ser feito da seguinte maneira -

Example

from rx import Observable
Observable.of(1,2,3,4,5,6,7,8,9,10)\
   .filter(lambda i: i %2 == 0) \
   .sum() \
   .subscribe(lambda x: print("Value is {0}".format(x)))

Mas, no caso do RxPY versão 3, você pode usar o método pipe () e vários operadores como mostrado abaixo -

Example

import rx
from rx import operators as ops
rx.of(1,2,3,4,5,6,7,8,9,10).pipe(
   ops.filter(lambda i: i %2 == 0),
   ops.sum()
).subscribe(lambda x: print("Value is {0}".format(x)))