实际开发场景加强map和flatMapLatest理解

2020-03-29  本文已影响0人  af4e8a35bc89

以下是验证后台数据库中用户名是否已经存在与可用:
validatedUsername = input.username.flatMapLatest{ username in return validationService.validateUsername(username).observeOn(MainScheduler.instance).catchErrorJustReturn(.failed(msg: "Error contacting server")) }.share(replay: 1)

以下是本地验证注册时输入的密码是否已经够6位:
validatedPassword = input.password.map{ password in return validationService.validatePassword(password) }.share(replay: 1)

map:通过一个转换函数,将 Observable 的每个元素转换一遍
flatMap:将 Observable 的元素转换成其他的 Observable,然后将这些 Observables 合并
flatMapLatest:将 Observable 的元素转换成其他的 Observable,然后取这些 Observables 中最新的一个

flatMapLatest适用于避免重复操作,只需对最新的一次操作进行处理的情况。如网络请求。输入用户名,直到用户输入稳定,只需要取稳定后最新的。通过flatMapLatest方法取最新的一次输入,发起网络请求,服务器响应后判断用户输入的用户名字符串是否合法。

map适用于每次都需要单独处理的操作。在这里是本地判断密码是否够6位,用户每输入一次密码,就需要验证是否已经够至少6位。

上一篇 下一篇

猜你喜欢

热点阅读