【发布时间】:2021-01-24 14:39:56
【问题描述】:
我在后端保留数据,然后获取该项目的所有保留数据。
获取数据只能在预订之后进行,以便将其包含在内。
我有两个解决方案,但想知道哪个是最好的解决方案,以及在此示例中使用 concat 和 tap 是否有任何优势:
订阅内订阅:
...
this.reserveDataItem();
...
reserveDataItem(){
this.myService.reserveData(this.selectedData).subscribe(res => {
if (res.status == 'SUCCESS'){
...logSuccessMessagesAndOtherStuff
}
this.getReservedDataItemsId();
});
}
getReservedDataItemsId(){
this.myService.getReservedDataItemsForRequestId(this.requestId).subscribe(res => {
if (res.status == 'SUCCESS'){
..doStuffWithDataItems
}
});
}
concat with tap:
我使用了 tap,因为我找不到如何在单个订阅中处理不同的返回类型
因此我想知道这里是否有任何优势..
...
concat(this.reserveDataItem(), this.getReservedDataItemsId())
.subscribe();
...
reserveDataItem(): Observable<ApiResponseDto<any>>{
return this.myService.reserveData(this.selectedData).pipe(
tap(res => {
if (res.status == 'SUCCESS'){
...logSuccessMessagesAndOtherStuff
}
})
)
}
getReservedDataItemsId():Observable<ApiResponseDto<DataItemDto[]>>{
return this.myService.getReservedDataItemsForRequestId(this.requestId).pipe(
tap(res => {
if (res.status == 'SUCCESS'){
..doStuffWithDataItems
}
})
)
}
【问题讨论】:
标签: javascript angular typescript rxjs observable