Angular Rxjs:使用异步管道连续延迟发出所有合并的可观察对象
Angular Rxjs: emit all merged observables with delay continuously with async pipe
大家好,我正在尝试使用 html 文件中的数据对象,我正在使用异步管道和主题来发出 ID 并获取服务器响应。
这是我的代码:
logDetails$: Observable<LogDetails>;
getDetails$ = new Subject<string>();
this.logDetails$ = this.getDetails$.pipe(
map(id => ApiRoutes.fileLogDetailsApiRoute.replace(":id", id)),
switchMap(apiRoute => this.http.get<LogDetails>(apiRoute))
);
我在我的视图中使用异步管道来订阅结果。
*ngIf="logDetails$ | async; let details"
现在我想要这种行为:我从多个位置发出带有 id 的 getDetails$。
然后我需要在服务器调用 null 值之前将结果发送到视图,然后服务器响应 (LogDetails 对象) 经过一些延迟。
- 发送结果的默认值
- 延迟
- 发送服务器响应
我可以使用运算符来实现吗?
您可以使用 startWith
和 delay
。
this.logDetails$ = this.getDetails$.pipe(
map(id => ApiRoutes.fileLogDetailsApiRoute.replace(":id", id)),
switchMap(apiRoute => this.http.get<LogDetails>(apiRoute).pipe(
delay(1000),
startWith(null)
)),
);
大家好,我正在尝试使用 html 文件中的数据对象,我正在使用异步管道和主题来发出 ID 并获取服务器响应。
这是我的代码:
logDetails$: Observable<LogDetails>;
getDetails$ = new Subject<string>();
this.logDetails$ = this.getDetails$.pipe(
map(id => ApiRoutes.fileLogDetailsApiRoute.replace(":id", id)),
switchMap(apiRoute => this.http.get<LogDetails>(apiRoute))
);
我在我的视图中使用异步管道来订阅结果。
*ngIf="logDetails$ | async; let details"
现在我想要这种行为:我从多个位置发出带有 id 的 getDetails$。
然后我需要在服务器调用 null 值之前将结果发送到视图,然后服务器响应 (LogDetails 对象) 经过一些延迟。
- 发送结果的默认值
- 延迟
- 发送服务器响应
我可以使用运算符来实现吗?
您可以使用 startWith
和 delay
。
this.logDetails$ = this.getDetails$.pipe(
map(id => ApiRoutes.fileLogDetailsApiRoute.replace(":id", id)),
switchMap(apiRoute => this.http.get<LogDetails>(apiRoute).pipe(
delay(1000),
startWith(null)
)),
);