如何从 rx observable 中获取最后十个元素?

How do I take the last ten elements from an rx observable?

我有一个 Observable 结合其他三个 Observables 然后发出一个 array。我想从这个合并的 array 中取出最后 10 个对象。但我想我取而代之的是最后十个 arrays。尝试先使用 compactMap 但没有成功。它仍然作为 array

返回
return Observable.combineLatest(breakfast, dessert, cookies) { [=10=] +  +  }
    .compactMap { [=10=] }.takeLast(10)
    .do(onNext: { [weak self] value in
        self?.content.accept(value.compactMap {
            NewRecipesCollectionViewCellViewModel(recipe: [=10=])})
        })

通过这种方法,您可以一一取回元素:

    let breakfast = Observable.just(["egg", "milk"])
    let dessert = Observable.just(["ice cream", "chocolate"])
    let cookies = Observable.just(["cookie1", "cookie2"])

    Observable.combineLatest(breakfast, dessert, cookies)
        .map { [=10=] +  +  }
        .do(onNext: { foods in
            let lastTenFood = foods.suffix(10) // returns the last 10 elements from the array
            for food in lastTenFood {
                print("Food: \(food)")
            }
        })
        .subscribe()
        .disposed(by: disposeBag)