【问题标题】:Combine two ajax response in RXJS在 RXJS 中结合两个 ajax 响应
【发布时间】:2016-06-11 21:30:52
【问题描述】:

我还在学习 RXJS(刚开始),我知道我的问题是初学者。我正在尝试结合来自外部呼叫的两个响应。假设我拨打 call1 和 call2,我应该能够订阅一个组合响应。

下面是我的代码

var arrayWeather =['http://apidev.accuweather.com/currentconditions/v1/250111.json?language=en&apikey=hoArfRosT1215', 'http://apidev.accuweather.com/currentconditions/v1/4-204108_1_AL.json?language=en&apikey=hoArfRosT1215'];
var refreshClickStream = Rx.Observable.fromEvent(document.querySelector('.refresh'), 'click');

refreshClickStream.subscribe(function(e){
  Rx.Observable.fromArray(arrayWeather)
    .flatMap(function(datathings){ 
        return Rx.DOM.Request.get(datathings)
    })
    .subscribe(function(data){
        console.log(data.response);
    });
});

【问题讨论】:

    标签: javascript rxjs rxjs5


    【解决方案1】:

    你需要一个Zip

    var combined = Rx.Observable.zip(refreshClickStream, anotherStream);
    

    然后订阅合并

    var subscription = combined.subscribe(
      function (x) {
      },
      function (err) {
      },
      function () {
      });
    

    您还可以在Zip 中添加一个函数,告诉 zip 操作如何将两者结合起来

    var combined = Rx.Observable.zip(refreshClickStream, anotherStream, function (firstStreamItem, secondStreamItem) {
        return { first: firstStreamItem, second: secondStreamItem };
      });
    

    有关 RxJS Zip 的更多信息,see here

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 2019-12-25
      • 2017-06-11
      • 2013-10-31
      • 2021-07-26
      • 1970-01-01
      相关资源
      最近更新 更多