angular - 角度地图或合并地图
问题描述
我有一个简单的 JSON 文件,它以以下格式返回对象数组:
[
{
"id": 1,
"url": "file/abc.txt"
},
{
"id": 2,
"url": "file/def.txt"
}
]
我正在访问以下服务:
this.http.get("json-url")
.map((response) => response.json())
.filter((file) => file.id === 1)
它没有任何作用。但是,如果我改用 mergeMap,它就可以正常工作。
this.http.get("api-url")
.mergeMap((response) => response.json())
.filter((file) => file.id === 1)
我之前使用过地图运算符并且它有效。但是,它在这里不起作用。如果我在使用地图运算符时有任何错误,请告诉我。
请注意-我使用的是角度 6。
解决方案
这里要理解的重要一点是this.http.get("json-url")
返回一个可观察的。在您订阅之前不会执行。您必须订阅才能发送请求。
this.http.get("json-url")
.map((response) => response.json())
.filter((file) => file.id === 1)
.subscribe(theResultAfterMapAndFilter => console.log(theResultAfterMapAndFilter));
起作用的原因mergeMap
是它在内部订阅了可观察的源(如果我没记错的话)。
推荐阅读
- python - 解析、删除和屏蔽 IP 地址的脚本
- python - Pandas:如何将一系列函数应用于多对列
- rest - Curl POST 将 Null 值插入到表中以用于连接列
- java - REST API 设计查询 2
- php - 如何在 php 中创建多部分/混合的电子邮件内容类型
- sql - 如果第 2 个表中存在 1 个表的值,则用第 1 个和第 2 个表的总和更新第 2 个表的值,否则将第 1 个表的数据插入到第 2 个表
- visual-studio - UWP 不会在 Microsoft 示例中为 FileIO.WriteBufferAsync 编译 GetBufferFromString
- c# - 将单个项目的方法标记为已过时
- java - Python和Java中的矩阵减法差异
- csv - 使用 Bridge 将 CSV 数据导入 IPTC XMP 图像的元数据映射