如何在 Angular 11 / ionic 6 中使用 MergeMap?
How to use MergeMap in Angular 11 / ionic 6?
我对合并多个 API 请求的 MergeMap 方法非常陌生。我已经关注并阅读了本教程如何操作。
这是我从 API:
获取数据的代码
Service.ts
getPriceList(): Observable<Price[]> {
this.http.get<Price[]>(this.baseUrl).pipe(
map( priceId => {
const id = priceId[0];
this.priceId = id.id;
return id;
}),
mergeMap( Id=> this.http.get(this.baseUrl2 + /${Id.id})),
).subscribe( productPrices => {
this.productPrices = productPrices;
});
}
我需要第一个 baseUrl
中的所有数据,但我分配了 Id 以便在我的第二个 api 请求中使用它。我在 home.ts 中这样调用这个方法:
this.dataService.getPriceList().subscribe(response => {
console.log(response);
this.priceListData = response;
我在文件中调用这个方法没有报错
错误在 Service.ts
的方法中
A function whose declared type is neither 'void' nor 'any' must return
a value.ts(2355)
我在第一个 api 请求中使用 return 语句。
我试过这个解决方案:
然后我得到以下错误:
Type 'Subscription' is missing the following properties from type
'Observable<Crypto[]>': _isScalar, source, operator, lift, and 6
more.ts(2740)
如何在 Angular 11 / ionic 6 中正确使用 MergeMap?
我认为你应该 return getPriceList 上的一些东西,但你不是,如果你在 getPriceList 内订阅,之后就没有可观察到的东西可以订阅了
getPriceList(): Observable<Price[]> {
return this.http
.get<Price[]>(this.baseUrl)
.pipe(
map(priceId => {
const id = priceId[0];
this.priceId = id.id;
return id;
}),
mergeMap(id => this.http.get(`this.baseUrl2${id.id}`))
)
}
和通话
this.dataService.getPriceList().subscribe(response => {
console.log(response);
this.priceListData = response;
});
我对合并多个 API 请求的 MergeMap 方法非常陌生。我已经关注并阅读了本教程如何操作。
这是我从 API:
获取数据的代码Service.ts
getPriceList(): Observable<Price[]> {
this.http.get<Price[]>(this.baseUrl).pipe(
map( priceId => {
const id = priceId[0];
this.priceId = id.id;
return id;
}),
mergeMap( Id=> this.http.get(this.baseUrl2 + /${Id.id})),
).subscribe( productPrices => {
this.productPrices = productPrices;
});
}
我需要第一个 baseUrl
中的所有数据,但我分配了 Id 以便在我的第二个 api 请求中使用它。我在 home.ts 中这样调用这个方法:
this.dataService.getPriceList().subscribe(response => {
console.log(response);
this.priceListData = response;
我在文件中调用这个方法没有报错
错误在 Service.ts
的方法中A function whose declared type is neither 'void' nor 'any' must return a value.ts(2355)
我在第一个 api 请求中使用 return 语句。
我试过这个解决方案:
然后我得到以下错误:
Type 'Subscription' is missing the following properties from type 'Observable<Crypto[]>': _isScalar, source, operator, lift, and 6 more.ts(2740)
如何在 Angular 11 / ionic 6 中正确使用 MergeMap?
我认为你应该 return getPriceList 上的一些东西,但你不是,如果你在 getPriceList 内订阅,之后就没有可观察到的东西可以订阅了
getPriceList(): Observable<Price[]> {
return this.http
.get<Price[]>(this.baseUrl)
.pipe(
map(priceId => {
const id = priceId[0];
this.priceId = id.id;
return id;
}),
mergeMap(id => this.http.get(`this.baseUrl2${id.id}`))
)
}
和通话
this.dataService.getPriceList().subscribe(response => {
console.log(response);
this.priceListData = response;
});