gpt4 book ai didi

javascript - 订阅函数导致循环

转载 作者:太空狗 更新时间:2023-10-29 18:18:42 26 4
gpt4 key购买 nike

我正在尝试使用来自 cryptocompar 的 API 来获取数据。

更新了更多细节并从代码中删除了 ngClass。在 test.ts 中

   // data from library page
coinsGroup = [];

datainfo: Observable<any>;


coins:any;

constructor(public navCtrl: NavController, public navParams: NavParams, public http: HttpClient)
{
}


ionViewDidLoad()
{

console.log('ionViewDidLoad TestPage');
this.coinsGroup = this.navParams.data;
}

getdetail(coin) {

this.datainfo = this.http.get("https://min-api.cryptocompare.com/data/pricemultifull?fsyms="+coin+"&tsyms=USD");
this.datainfo.map(res => res)
.subscribe(data => {
this.coins = data['DISPLAY'][coin]['USD']['PRICE']
console.log('my data: ', this.coins);
});
}

在 test.html 上

 <span *ngIf="coinsGroup.symbol"  class="bold1">

{{getDetail(coinsGroup.symbol)}}</span>

coinsGroup 将从图书馆页面获取符号,例如 ['BTC','ETH',..etc]

在 chrom 的控制台上,它一直循环,如下所示,直到浏览器崩溃。

enter image description here

将 subscribe() 与 map 一起使用时会导致死循环,如上所示,不确定原因以及如何解决此问题?

最佳答案

是的。

<span [ngClass]="getdetail('BTC')" class="bold1">{{ coins }}</span>

是问题。 ngClass尝试设置 string class 的值. (所以你可以应用css)。这不是您要尝试做的,您是在尝试检索所有硬币然后显示它们。

方法是这样的:

datainfo: Observable<any>;  
coins:any;

constructor(public navCtrl: NavController, public navParams: NavParams, public http: HttpClient)
{}
// load the coins after the view is loaded, can also be done on ngOnInit
ionViewDidLoad(){
this.getDetail('BTC');
}

getdetail(coin) {
this.datainfo = this.http.get("https://min-api.cryptocompare.com/data/pricemultifull?fsyms="+coin+"&tsyms=USD");
this.datainfo
.map(res=>res)
.subscribe(data => {
this.coins = data
console.log('my data: ', this.coins);
});
}

简单设置

<ion-content padding>

<div style="text-align: center;">
<!-- the ngIf directive will only show this span if `coins` is defined -->
<span *ngIf="coins" class="bold1">{{ coins }}</span>

</div>
</ion-content>

如果你想创造更多的币,最好的做法可能如下:

  let coinList = ["BTC", "ETH", "LTE"];

constructor(/* ... */) {}


getDetail(coin): Observable<any> {
// don't subscribe, return Observable
this.http.get("...").map(res=>res);
}

在你的 html 中

<ion-content padding>

<div style="text-align: center;">

<span *ngFor="let coin of coinList" class="bold1">
{{ getDetail(coin) | async }}
</span>
</div>
</ion-content>

关于javascript - 订阅函数导致循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50482975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com