javascript - Angular Rxjs:使用异步管道连续发出所有合并的可观察对象
问题描述
大家好,我正在尝试在 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$ 。
然后我需要在服务器调用空值之前将结果发送到视图,然后在延迟一段时间后服务器响应(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)
)),
);
推荐阅读
- ios - SWIFT:在 TVOS 中退出收集时强制焦点引擎转到按钮
- docker - 如何构建和推送 Docker 镜像?
- javascript - 使用 JsPdf AutoTable 在“d”和其他字符上设置换行符时出现问题
- native-file-system-api-js - 使用 FileSystemFileHandle 在 Chrome 中跨页面重新加载时保持文件描述符
- sql - 在 Postgresql 中为每个被拒绝或接受的日期查找第一个 OPENED_DATE
- java - Java Hashtable 如何根据 hashcode 计算元素的放置位置?
- scala - 在 foldLeft 中使用案例类作为累加器的更优雅的方式是什么?
- ansible - ansible 中的清单(主机)列表在 /etc/ansible/ 中;将它放在 /etc 中的原因是什么?
- html - 如何让提交按钮直接发送到我的电子邮件 HTML CSS
- arraylist - 数组列表未获得最小年龄