美文网首页
flatMap、flatMapLatest

flatMap、flatMapLatest

作者: adaodao3056 | 来源:发表于2020-12-22 10:27 被阅读0次

    flatMap

    将一个sequence转换为一个sequences,当你接收一个sequence的事件,你还想接收其他sequence发出的事件的话可以使用flatMap,她会将每一个sequence事件进行处理以后,然后再以一个sequence形式发出事件

    let stu1 = Student(score: Variable(80))
    let stu2 = Student(score: Variable(100))
            
    let student = Variable(stu1)
    student.asObservable().flatMap { (stu: Student) -> Observable<Double> in
        return stu.score.asObservable()
    }.subscribe { (event) in
        print(event)
    }.addDisposableTo(bag)
            
    student.value = stu2
    stu1.score.value = 10
    stu2.score.value = 20
            
        /* 输出顺序为:
             next(80.0)
             next(100.0)
             next(10.0)
             next(20.0)
             completed
         */
    

    flatMapLatest

    flatMapLatest只会接收最新的value事件,将上例代码改为flatMapLatest

    let stu3 = Student(score: Variable(70))
    let stu4 = Student(score: Variable(60))
     
    let student1 = Variable(stu3)
    student1.asObservable().flatMapFirst { (stu) -> Observable<Double> in
        return stu.score.asObservable()
    }.subscribe { (event: Event<Double>) in
        print(event)
    }.addDisposableTo(bag)
    student1.value = stu4
    stu3.score.value = 10
    stu4.score.value = 20
            
        /* 输出顺序为:
             next(70.0)
             next(10.0)
             completed
         */
    
    

    相关文章

      网友评论

          本文标题:flatMap、flatMapLatest

          本文链接:https://www.haomeiwen.com/subject/ccnjnktx.html