# flatMapLatest

**将 `Observable` 的元素转换成其他的 `Observable`，然后取这些 `Observables` 中最新的一个**

![](https://4217506537-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MWj545abP2yK86-qksJ%2Fsync%2F81e0b9c22176477943a2a3b03c9359ee01ae9e36.png?generation=1616819383735810\&alt=media)

**flatMapLatest** 操作符将源 `Observable` 的每一个元素应用一个转换方法，将他们转换成 `Observables`。一旦转换出一个新的 `Observable`，就只发出它的元素，旧的 `Observables` 的元素将被忽略掉。

## 演示

**tips：**&#x4E0E; [flatMap](https://3440217568.gitbook.io/rxswift/decision_tree/flatmap) 比较更容易理解

```swift
let disposeBag = DisposeBag()
let first = BehaviorSubject(value: "👦🏻")
let second = BehaviorSubject(value: "🅰️")
let variable = Variable(first)

variable.asObservable()
        .flatMapLatest { $0 }
        .subscribe(onNext: { print($0) })
        .disposed(by: disposeBag)

first.onNext("🐱")
variable.value = second
second.onNext("🅱️")
first.onNext("🐶")
```

**输出结果：**

```swift
👦🏻
🐱
🅰️
🅱️
```
