zoukankan      html  css  js  c++  java
  • [RxJS] Reactive Programming

    Now we want each time we click refresh button, we will get new group of users. So we need to get the refresh button click event stream:

    var refreshButton = document.querySelector('.refresh');
    var refreshClickStream = Rx.Observable.fromEvent(refreshButton, 'click');

    Then each time refreshClickStream happens, we will get users request url:

    var requestOnRefreshStream = refreshClickStream
      .map(ev => {
        var randomOffset = Math.floor(Math.random()*500);
        return 'https://api.github.com/users?since=' + randomOffset;
      });

    And we use this url to get json object:

    var responseStream = requestOnRefreshStream
      .flatMap(requestUrl =>
        Rx.Observable.fromPromise(jQuery.getJSON(requestUrl))
      );

    But the problem here is when the page loaded, we haven't click refresh button yet, therefore there is no data fetched fromt the server.

    So we need to have a stream when the page loaded:

    var startupRequestStream = Rx.Observable.just('https://api.github.com/users');

    Then we can merge startUpRequestStream with requestOnRefreshStream:

    var responseStream = requestOnRefreshStream
      .merge(startupRequestStream)
      .flatMap(requestUrl =>
        Rx.Observable.fromPromise(jQuery.getJSON(requestUrl))
      );
    //-------a-----b-----c--------->
    //s----------------------------->
    //merge
    //s------a-----b-----c--------->
  • 相关阅读:
    MySQL Show Processlist 整理
    由linkedin数据库泄漏引发的思考[转发]
    MySQL 严重 Bug 用户登陆漏洞[转发]
    关于博客的开始
    Linux共享库位置配置
    getopt详解
    git使用
    ArrayList读源码心得
    HashMap内部实现机制及优化第一篇
    如何才能做一个好网站系列 第三篇 最初的思路
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5255295.html
Copyright © 2011-2022 走看看