gpt4 book ai didi

javascript - Angular 订阅被调用两次

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:34 25 4
gpt4 key购买 nike

我有一系列遵循以下逻辑的可观察值:getStyles() --> getPrices()

对于 configs 中的每个 config.id,getStyles() 返回一个样式对象,该样式对象被传递给 getLease,其中附加价格,然后推送到名为“style”的数组

  getStyles(configs: any) {
configs.forEach(config => {
this._APIService.getStyleByID(config.id).subscribe(
res => {
res.config = config;
this.getLease(res);
}
);
});

}

getLease(style: any): void {
this._priceService.getPrice().subscribe(
price => {
style.price = price;
this.garage.push(style);
console.log(this.garage);
});
}


}

我遇到的问题是,由于样式数组的样式对象数量是所需数量的 2 倍,因此进行了重复调用。问题是 Angular 正在调用 this._APIService.getStyleByID() 两次,而我希望它调用一次。如何修复我的 Observables 仅被调用一次?

最佳答案

尝试 switchMap,它类似于 mergeMap,但如果它发生更改,它会取消最后一个请求:

  getStylesWithoutYear(): void {
this._APIService.getStylesWithoutYear()
.switchMap(styles => {
styles.years.forEach(year => {
year.styles.forEach(style => {
this._APIService.getStyleByID(style.id)
})
})
})
.subscribe(style => {
console.log('style', style)
})
}

关于javascript - Angular 订阅被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44009784/

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