如何在Angular 6的间隔函数中放置服务方法?

时间:2018-08-25 23:28:09

标签: angular http service observable

我正在尝试使用间隔函数每X秒执行一次服务方法,但是它不起作用。

服务方法是:

emptyList=[2,4,5,1,7,6,9,0,2,4]
print(emptyList)

}

现在我正在这样做:

getCryptocurrencyInfoBasic(): Observable<Asset>[]{
  this.cryptoinfo = [];
  this.cryptoinfo.push(this.http.get<Asset>(this.btcurl));
  this.cryptoinfo.push(this.http.get<Asset>(this.ethurl));
  this.cryptoinfo.push(this.http.get<Asset>(this.ltcurl));
return this.cryptoinfo;

并且它正在打印数组的每个元素(通过控制台),但随后它向我显示此错误:

TypeError:您在期望流的位置提供了“ undefined”。您可以提供一个Observable,Promise,Array或Iterable。

如何获取带有3个http Observables的信息变量数组以将其发送到HTML?

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在从getCryptocurrencyInfoBasic方法返回一个数组。

Observable运算符map需要一个Observable输入。同样,switchMap运算符采用可观察的输入并期望可观察的返回值(我很惊讶您的Typescript编译器或Intellisense尚未对您大喊大叫,哈哈)。

您需要修改getCryptocurrencyInfoBasic以返回一个Observable。最懒惰的方法是使用return Observabke.of(this.cryptoinfo);,但是Observables还有很多其他机会在这里闪耀。

例如,您可以将cryptoInfo更改为Subject并使用next通过它传输新的值,也可以将三个http.get展平为{{1 }}和cryptoInfoflatMap