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
  • 相关阅读:
    leetcode 567 滑动窗口
    田忌赛马
    去除CSDN无用的打印边框,显示数据
    操作系统博客清单
    OpenKiwi学习笔记
    开源minigui移植
    嵌入式GUI总结
    short int 变量的取值范围
    68 进程等待机制的实现 下
    67 进程等待机制的实现 上
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6920445.html
Copyright © 2011-2022 走看看