zoukankan      html  css  js  c++  java
  • [RxJS] Implement pause and resume feature correctly through RxJS

    Eventually you will feel the need for pausing the observation of an Observable and resuming it later. In this lesson we will learn about use cases where pausing is possible, and what to do when pausing is impossible.

    const resume$ = new Rx.Subject();
    
    const res$ = resume$
      .switchMap(resume =>
        resume ?
          Rx.Observable.interval(2000) :
          Rx.Observable.empty()
      )
      .do(x => console.log('request it! ' + x))
      .switchMap(ev => Rx.Observable.ajax({
        url: 'https://jsonplaceholder.typicode.com/users/1',
        method: 'GET',
      }));
    
    res$.subscribe(function (data) {
      console.log(data.response);
    });
    
    resume$.next(false);
    setTimeout(() => resume$.next(true), 500);
    setTimeout(() => resume$.next(false), 5000);

    here use 

    Rx.Observable.empty()

    inside switchMap(), it means if code goes to empty(), then the rest of code:

     .do().switchMap()

    won't run.

    If just subscribe, it trigger complete function:

    var source = Rx.Observable.empty();
    
    var subscription = source.subscribe(
      function (x) {
        console.log('Next: %s', x);
      },
      function (err) {
        console.log('Error: %s', err);
      },
      function () {
        console.log('Completed');
      });
      
    // => Completed
  • 相关阅读:
    java内存泄露
    hbase java api
    配置CRT远程登录
    kafka分区消费模型
    JAVA内存区域
    JVM分代和垃圾回收
    spring中bean的作用域
    分布式RPC
    session共享
    ZooKeeper实现分布式session
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6920445.html
Copyright © 2011-2022 走看看