zoukankan      html  css  js  c++  java
  • [RxJS] Refactoring CombineLatest to WithLatestFrom

    This lesson shows why it’s preferable to using withLatestFrom instead of combineLatest in certain scenarios.

    Timer will continue until you enter the number in the input field:

    timer$
        .do((x)=> console.log(x))
        .combineLatest(
            input$.do((x)=> console.log(x)),
            (timer, input)=> ({count: timer.count, text: input})
        )
        .takeWhile((data)=> data.count <= 3)
        .filter((data)=> data.count === parseInt(data.text))
        .reduce((acc, curr)=> acc + 1, 0)
        .subscribe(
            (x)=> console.log(x),
            err=> console.log(err),
            ()=> console.log('complete')
        );

    In this case, withLatestFrom() works the same way:

    timer$
        .do((x)=> console.log(x))
        .withLatestFrom(
            input$.do((x)=> console.log(x)),
            (timer, input)=> ({count: timer.count, text: input})
        )
        .takeWhile((data)=> data.count <= 3)
        .filter((data)=> data.count === parseInt(data.text))
        .reduce((acc, curr)=> acc + 1, 0)
        .subscribe(
            (x)=> console.log(x),
            err=> console.log(err),
            ()=> console.log('complete')
        );

    But let's say we only want the timer log out 3 times then it should hit the complete block, logout "complete":

    timer$
        .do((x)=> console.log(x))
        .takeWhile((data)=> data.count <= 3)
        .withLatestFrom(
            input$.do((x)=> console.log(x)),
            (timer, input)=> ({count: timer.count, text: input})
        )
        .filter((data)=> data.count === parseInt(data.text))
        .reduce((acc, curr)=> acc + 1, 0)
        .subscribe(
            (x)=> console.log(x),
            err=> console.log(err),
            ()=> console.log('complete')
        );

    then it only works with withLatestFrom() NOT combimeLatest().

    The reason for that is combimeLatest require both timer$ and input$. But withLatestFrom() only need $timer.

  • 相关阅读:
    【转载,整理】Linux性能监控
    【转载,整理】Spotlight 监控
    Linux中SFTP命令
    SQL中特殊符号的使用
    Oracle数据库中number类型在java中的使用
    【转载】抓包工具Fidder详解(主要来抓取Android中app的请求) 包括https
    Linux scp命令
    shell编程入门(一)
    Linux 技巧:让进程在后台可靠运行的几种方法
    Fast Algorithm To Find Unique Items in JavaScript Array
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5269643.html
Copyright © 2011-2022 走看看