RxSwift: следует ли groupBy отправлять завершенные каждому из своих объектов GroupedObservable после завершения источника? - PullRequest
0 голосов
/ 25 апреля 2018

Кажется, что следующий код никогда не работает, поскольку группы, кажется, не заканчиваются, и takeLast () не знает, что является последним:

observableSequence
  .groupBy { $0.key }
  .map { groups in
    groups
    .takeLast(1)
    .subscribe(onNext: { element in
      print(element)
    })
    .disposed(by: self.disposeBag)
  }
  .subscribe()
  .disposed(by: self.disposeBag)

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Я все еще не мог заставить работать более оригинальную более сложную версию, но я нашел другое лучшее решение для этого, которое заключается в обратном порядке последовательности и использовании take () вместо takeLast ().Это сработало, поэтому я предполагаю, что последовательность не заканчивалась (хотя я не понимаю, почему нет).

В любом случае, лучше взять take (), чем takeLast (), если можете.

0 голосов
/ 25 апреля 2018

Ответ - да.

    Observable.from([1,2,3,4,5,6,7,8])
        .groupBy { ($0 % 2) == 0 }
        .subscribe(onNext: { group in
            group
                .takeLast(1)
                .subscribe(onNext: { e in
                    print(e)
            })
            .disposed(by: self.disposeBag)
        })
    .disposed(by: self.disposeBag)

Вышеприведенный код выводит:

7

8

...