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



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

服务方式为:

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;

}

现在我正在这样做:

info = interval(1000).pipe(
switchMap((i) => this.cryptoService.getCryptocurrencyInfoBasic()[i]),    
map(res => {res; console.log(res);}));

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

类型错误:您在需要流的位置提供了"未定义"。您可以提供可观察、承诺、数组或可迭代。

如何获取具有 3 个 http 可观察量的数组的信息变量以将其发送到 HTML?

提前感谢!

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

可观察运算符map需要可观察输入。同样,switchMap运算符接受一个可观察的输入并期望一个可观察的返回值(我很惊讶你的 Typescript 编译器或 Intellisense 还没有对你大喊大叫,哈哈(。

您需要修改getCryptocurrencyInfoBasic以返回可观察量。最懒惰的方法是return Observabke.of(this.cryptoinfo);,但可观察物还有很多其他机会在这里大放异彩。

例如,您可以将cryptoInfo更改为Subject并使用next通过它流式传输新值,或者您可以使用flatMapmergeMap将三个http.get展平为cryptoInfo

最新更新