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--------->
  • 相关阅读:
    thinkphp 前后端分离
    git常用命令总结
    DIV常用属性大全
    shell编程学习之使用jq对json数据进行提取
    shell编程之if语句
    shell编程之变量赋值
    【总结】sqli-labs Less(1-35) 小结
    【总结】sqlmap常用命令
    【总结】kali(amd64)中安装nessus
    【总结】ettercap工具之DNS劫持
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5255295.html
Copyright © 2011-2022 走看看