【发布时间】:2018-09-12 15:38:28
【问题描述】:
我无法理解 RxSwift 中 map 和 flatMap 之间的区别。在 RxSwift 游乐场示例和书籍中,flatMap 被用作转换具有内部 Observable 属性的 Observables。
但是我看到 flatMap 直接用于基本类型的 Observable。例如对于下面的代码,它们都产生相同的输出。谁能帮我理解 map 和 flatMap 之间的区别
struct Student {
let score:Int
}
let ryan = Student(score:80)
let student = PublishSubject<Student>()
let deneme = student.map({ val in
return Student(score: val.score+10)
})
deneme.subscribe(onNext: {
print("StudentMAP: \($0.score)")
})
let deneme2 = student.flatMap({ val -> Observable<Student> in
return Observable.of(Student(score: val.score + 10))
})
deneme2.subscribe(onNext: {
print("StudentFlatMAP: \($0.score)")
})
student.onNext(ryan)
【问题讨论】: