angular - 为什么我的 http 请求取消/停止 observables 流?
问题描述
我有一个数组,applications
我希望每个应用程序都有一个名为Blobs
. 我必须发出一个新的 HTTP 请求来为每个应用程序获取 Blob,并为此使用switchMap
它。但是,由于某种原因,它只发出最后一个应用程序,而不是每个应用程序。
(我知道不好的解释,但是当你阅读代码时你会明白的)
this.serviceOne.getAllApplications(visitId).pipe(
switchMap((applications) => from(applications)),
switchMap((application) => {
console.log("successfully logs every application in applications array");
return forkJoin([
of(application),
this.blobsService.getBlobBs({
visitId,
applicationId: application.id,
}),
]);
}),
map(([application, blobs]) => {
console.log("only logs on last emitted application");
return { ...application, blobs };
}),
toArray()
)
它返回一个仅包含最后一个元素的数组(blob 属性已正确添加到最后一个对象中。)
每当我将 forkJoin 更改为此:
return forkJoin([
of(application) ,
of([])
]);
它开始正常工作。
获取 Blob:
getBlobBs(identifier: IIdentifier): Observable<BlobItem[]> {
return this.http.get<BlobItem[]>(
'service url goes here'
)
}
解决方案
推荐阅读
- python - pymysql 被拒绝访问,而 mysql-client 工作
- ruby-on-rails - 自定义 form_for 到验证记录
- html - 从R中的html页面中提取元素
- laravel - Laravel 7.0 - tymon/jwt-auth - 检查令牌是否有效
- linux - 这些获取资源使用情况的方法有什么区别?
- c++ - Why is my addrinfo struct full of garbage after calling getaddrinfo()?
- wix - 未安装新组件的文件,因为旧组件具有相同的文件
- sql - 计算雪花中的警报洪水
- laravel - 使用 Laravel 和 Postgresql 进行全文搜索
- sql - Dbms sqltune 程序一直在运行