首页 > Web开发 > 详细

[RxJS] Reactive Programming - New requests from refresh clicks -- merge()

时间:2016-03-08 20:55:54      阅读:173      评论:0      收藏:0      [点我收藏+]

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--------->

 

[RxJS] Reactive Programming - New requests from refresh clicks -- merge()

原文:http://www.cnblogs.com/Answer1215/p/5255295.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!