【发布时间】:2021-07-22 04:27:35
【问题描述】:
我正在尝试重构一个 get http 请求。我现在使用的代码是从服务中获取数据,并且在订阅方法中也改变了一个布尔标志
this.eventsService.getEvents(this.pageSize, this.currentPage).subscribe(
(data) => {
this.busy = false
this.events = data.events
}
);
我已经重构在我的视图上使用 Observable,现在这段代码看起来像这样,组件代码:
const $results = this.eventsService.getEvents(this.pageSize, this.currentPage);
this.$events = $results.pipe(tap(() => { this.busy = false } ), map(data => data.events));
查看代码(原生脚本):
<ListView *ngIf="!busy" [items]="$events | async" ></ListView>
它确实在视图中提供了正确的内容,但 busy 标志在点击操作符中没有改变。以某种方式更改 pipe() 中的布尔值是否可行?
【问题讨论】:
-
重构代码中的订阅在哪里?我不确定这段代码的上下文。它在方法中吗?应该是
this.$results? -
我在视图文件中使用异步管道
-
使用哪个流?
$results或$events? -
$events,我在描述中从我的视图中添加了一行
-
如果它在视图中显示正确的内容,那么
busy一定是假的? (你重构的代码看起来基本没问题,所以想知道是否还有其他问题?)