首页 > 解决方案 > 角度地图或合并地图

问题描述

我有一个简单的 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。

标签: angularrxjs

解决方案


这里要理解的重要一点是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是它在内部订阅了可观察的源(如果我没记错的话)。


推荐阅读