В чем отличие последовательности операторов take в цепочке - PullRequest
0 голосов
/ 21 ноября 2018

Например,

let observable1 = Observable<Void>.of([1, 2, 3, 4, 5, 6, 7])
.take(1)
.flatMap{_ in 
 doSomething()
}

let observable2 = Observable<Void>.of([1, 2, 3, 4, 5, 6, 7])
.flatMap{_ in 
 doSomething()
}
.take(1)

Мой вопрос: в чем разница между этими двумя наблюдаемыми?Они выглядят одинаково.

1 Ответ

0 голосов
/ 21 ноября 2018

Если upstream (observable1 / observable2) испускает N элементов, оператор .flatMap() испускает M элементов, где M может бытьбольше (обычно), меньше или равно N .

В вашем первом примере вы берете 1 предмет из N предметов вверх по течению .Во втором примере вы берете 1 предмет из предметов M , испускаемых оператором .flatMap().

...