RxPY - Últimas actualizaciones de la versión

En este tutorial, usamos RxPY versión 3 y python versión 3.7.3. El funcionamiento de RxPY versión 3 difiere un poco con la versión anterior, es decir, RxPY versión 1.

En este capítulo, vamos a discutir las diferencias entre las 2 versiones y los cambios que deben realizarse en caso de que esté actualizando las versiones de Python y RxPY.

Observable en RxPY

En la versión 1 de RxPy, Observable era una clase separada:

from rx import Observable

Para usar el Observable, debe usarlo de la siguiente manera:

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

En RxPy versión 3, Observable es directamente parte del paquete rx.

Example

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

Operadores en RxPy

En la versión 1, el operador era métodos en la clase Observable. Por ejemplo, para hacer uso de operadores tenemos que importar Observable como se muestra a continuación:

from rx import Observable

Los operadores se utilizan como Observable.operator, por ejemplo, como se muestra a continuación:

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

En el caso de la versión 3 de RxPY, los operadores funcionan y se importan y usan de la siguiente manera:

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

Encadenamiento de operadores mediante el método Pipe ()

En la versión 1 de RxPy, en caso de que tuviera que usar varios operadores en un observable, tenía que hacer lo siguiente:

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

Pero, en el caso de la versión 3 de RxPY, puede usar el método pipe () y múltiples operadores como se muestra a continuación:

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