【问题标题】:Multiple $http requests in Ionic2 with intervalIonic2 中的多个 $http 请求,间隔时间
【发布时间】:2017-01-25 08:50:17
【问题描述】:

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

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

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

Multiple $http requests in Ionic2

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

谢谢!

【问题讨论】:

  • 你试过没有publish()connect()吗?
  • 导致此错误:“Observable”类型上不存在属性“forkJoin”。
  • 至少你有一个 Observable 而不是 Subscription。或许你会在stackoverflow.com/questions/38443798/…找到答案
  • 我尝试了该链接中给出的所有提示,但没有任何帮助。我尝试更新到 rxjs 5.0.3 但结果相同。恢复到 5.0.0-beta.12
  • forkJoin 是一个静态的 Observable 方法...你应该用 Rx.Observable.forkJoin(...) 调用它

标签: http ionic2 observable intervals


【解决方案1】:

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

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();

然后观察者订阅这个 observable

source.subscribe(...);

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

您在实施中遇到的另一个问题是您从.connect() 返回订阅,这只是为了在您需要时将其丢弃(取消订阅)。观察者应该订阅已发布的源代码。

【讨论】:

  • 谢谢!它正在工作!就我而言,我不得不将“Rx.Observable.forkJoin”替换为“Observable.forkJoin”。感谢您的精彩解释;)
猜你喜欢
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 2022-11-03
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多