Ionic2 中的多个$http请求,具有间隔



我想将多个http请求分叉到一个可观察量中,按间隔调用它并在所有订阅者之间共享相同的数据。

到目前为止,我的代码如下所示:

import {Observable} from "rxjs/Rx";
let obs = Observable
    .interval(10000)
    .publish()
    .connect()
    .forkJoin(
      this.http.get(API_URL + "x", {headers: this.headers})
        .map(response => response.json()),
      this.http.get(API_URL + "y", {headers: this.headers})
        .map(response => response.json())
    )
    .map(res => {
     // do some stuff
     return res;
    });

错误:

Typescript Error
Property 'forkJoin' does not exist on type 'Subscription'.

我读过:

https://blog.thoughtram.io/angular/2016/06/16/cold-vs-hot-observables.html

Ionic2 中的多个$http请求

http://restlet.com/blog/2016/04/12/interacting-efficiently-with-a-restful-service-with-angular2-and-rxjs-part-2/

谢谢!

这样的事情应该可以工作:

let source = Observable
    .interval(1000)
    .flatMap(() => {
        return Rx.Observable.forkJoin(
            this.http.get(API_URL + "x", {headers: this.headers})
                .map(response => response.json()),
            this.http.get(API_URL + "y", {headers: this.headers})
                .map(response => response.json())
        )
    })
    .publish();
source.connect();

然后观察者订阅这个可观察量

source.subscribe(...);

我在这里所做的是采用可观察的间隔,并将每个值替换为所有操作的 forkJoin。然后发布它以将相同的数据共享给多个订阅。

您在实现中遇到的另一个问题是您从.connect()返回订阅,这只是为了在需要时处置它(取消订阅)。观察者应订阅已发布的源。

相关内容

  • 没有找到相关文章

最新更新