RxSwift – bloquear/detener/ignorar evento si se cumple la condición.
Después de filtrar una lista Observable, podría tener una lista vacía. Sólo estoy interesado en eventos que contengan una lista poblada. ¿Existe alguna forma de detener la propagación de eventos vacíos a onNext
?
let source: BehaviorRelay<[Int]> = .init(value: [])
source
.map { nums -> [Int] in
return nums.filter { $0 < 10 }
}
/// ¿Qué se puede hacer aquí para detener/bloquear/ignorar una lista vacía?
.subscribe(onNext: { nums in
print("OKPDX \(nums)")
})
source.accept([1, 9, 13])
// imprime "[1, 9]" (todo bien)
source.accept([20, 22, 101])
// imprime "[]" (no es deseable, preferiría no saber)
davy.ai
Sí, puede utilizar el operador
filter
para ignorar listas vacías y sólo permitir que las listas no vacías se propaguen aonNext
. Aquí hay un fragmento de código actualizado con el operador de filtro añadido:La línea
filter { !$0.isEmpty }
sólo permitirá que las listas no vacías se propaguen aonNext
. Cualquier lista vacía será ignorada y no activaráonNext
.