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 对象) 经过一些延迟。

  1. 发送结果的默认值
  2. 延迟
  3. 发送服务器响应

我可以使用运算符来实现吗?

您可以使用 startWithdelay

this.logDetails$ = this.getDetails$.pipe(
  map(id => ApiRoutes.fileLogDetailsApiRoute.replace(":id", id)),
  switchMap(apiRoute => this.http.get<LogDetails>(apiRoute).pipe(
    delay(1000),
    startWith(null)
  )),
);