问题标签 [mergemap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
26 浏览

angular - 将 rxjs 与 http observable 一起使用时遇到问题

我正在做一个简单的 http 调用并获取一组对象

水果对象是

当我尝试在管道中分组或执行任何操作时,问题代码如下:

但是,当我尝试使用 rxjs groupBy 时出现错误;

0 投票
1 回答
134 浏览

angular - 如何合并来自参考的阵列的角火结果

我有一个从 angularfire 检索到的引用数组

我试图将这些数据作为一个可观察的数据返回,但是虽然我可以看到填充正确数据库引用的路径,但什么时候说完我的配置数组只包含几千个“未定义”条目我做错了什么?我尝试了各种方法,但结果总是一样的,所以我将问题浓缩到下面并希望得到一些帮助

我开始了整个事情

0 投票
0 回答
56 浏览

java - 使用公共键java创建两个映射的值的映射

我有一个Map<String, Employee>Map<String, Double>。我想要Map<Employee, Double>具有相同键的键。例如

预期输出:

0 投票
2 回答
562 浏览

angular - 使用 RxJS 从多个 API 调用构建数据

我试图更好地理解如何使用 RxJS 运算符来解决我遇到的特定问题。我实际上有两个问题,但它们足够相似。

我正在从 API 端点获取一堆文档,/api/v3/folders/${folderId}/documents并设置了具有执行此功能的服务,并处理所有身份验证等。

但是,这个文档对象数组没有描述属性。为了获得描述,我需要调用/api/v3/documents/${documentId}/上一次调用中的每个文档。我的文档界面如下所示:

我想我需要mergeMap等待并获取文档,一些如何将描述添加到我的Document界面并返回整个内容,但是我无法获得最终结果。

这可能看起来有点重复,但我发现的任何帖子都没有 100% 为我清理干净。

非常感谢任何有助于理解如何在第二次调用中正确使用数据并将其包装在一起的帮助。谢谢你。

感谢@BizzyBob,这是带有编辑和解释的最终解决方案:

由于某种原因,我无法pipe()从第二个服务订阅,所以我最终不得不在http.get那里拨打电话。错误是“不能在类型订阅上使用 pipe()”,这有点令人困惑,因为我pipe()在第一次订阅时使用。我将此更改应用于更新行为主题的服务功能,并且运行良好。谢谢!

0 投票
2 回答
62 浏览

angular - 在 forkJoin 中使用 mergeMap 来获取依赖于另一个的 observables

我有几个需要一起完成的异步请求的组合(使用 forkJoin 完成) - 这样做时,我启动了一个对象:

到目前为止,一切都很好。现在 - 我在这个对象中有3 个新属性:

然后第一个prop1)取决于 CProp 值(或 this.myThirdSrv.getCProp())作为参数,在执行 get 请求时,第二个(prop2)一个的简单操作,第三个( prop3 ) 也取决于第二个作为获取请求中的参数。我试过使用mergeMap,但没有用。我究竟做错了什么 ?:

这一切都应该在一个解析函数中完成,并且应该通过从 this.gatherAllRelevantData 获取数据(没有发生)并且不需要执行 this.gatherAllRelevantData 来启动 fullData 对象:

0 投票
0 回答
50 浏览

rxjs - 源为数组时如何取消合并映射

您好,我使用来自 rxjs 的 mergemap。我使用对象数组。

在我的 getFile 函数中,我使用 axios 将文件下载到 blob 并订阅保存。现在让我们说我想取消所有进程,我只是返回承诺拒绝,或者如果继续解决。有没有更好的办法?

我的目标是下载新文件。获取文件

0 投票
2 回答
894 浏览

angular - 使用 mergeMap 运算符捕获 rxjs 中的错误

我写了一个代码,我想在发生异常时捕获错误:

目标是捕获错误,如果它们发生在序列中的第一个可观察对象(getAssets)或第二个可观察对象(getUserById)中。我在第一个中添加了 catchError 运算符,但我看不到 console.log(error)。我不知道为什么。在此示例中,我应该如何正确捕获错误?

0 投票
2 回答
48 浏览

filter - 解决过滤器/合并问题的 RxJS 逻辑

我猜这更像是一个逻辑问题而不是 RxJS 问题,但我不知道如何解决它。

[输入 1] 从城市流中,我将收到 1 或 2 个对象(城市 1 或城市 2 是测试装置)。
如果只有一种语言可用,则为 1 个对象,同时具有两种语言的城市为 2 个对象。

[输入 2] 我也有一个 selectedLanguage(“fr”或“nl”)

【算法】 如果对象的语言对应selectedLanguage,我会采摘城市。当我收到 2 个对象(cities2)时,这适用于我的 RxJS 但是因为我也可以收到 1 个对象,所以过滤器不是正确的做法

[问题] 如果只有一个对象存在,我是否应该首先检查城市流并添加另一个对象。或者有什么更好的 RxJS/逻辑选项?

0 投票
1 回答
24 浏览

angular - 从 JSONArray 过滤数据并将其分配给新对象

考虑以下示例:

const arr1 = [{'a': 'I', 'b': 'M', 'c': 'Q'}]; const arr2 = [{'x': 'C', 'y': 'D', 'z': 'M'}];

// 我从服务调用中获取这些数组

if (arr2 的键 'z' 的值与 arr1 的键 'b' 的值匹配) {

// 将键值 x 和 y 分配给 arr1 对象

}

任何 RxJs 运营商都可以吗?我实现了 forkJoin 并且能够从服务到组件级别获取两个数组。但是我也尝试了 mergeMap 和 flatMap ,但没有成功。似乎,我必须运行一个我试图避免的嵌套循环。

0 投票
1 回答
47 浏览

angular - 处理两个 HTTP 请求(Angular + RxJS)

这是我的第一个 Angular 项目,我仍然对 Observables 和 RxJS 不太熟悉。在我的项目中,起初我想通过获取请求获取所有通知。之后,我想获取最后一个通知的 id,这样我就可以向服务器发送发布请求以将它们全部标记为已读。所以服务中的代码如下所示:

我尝试使用switchMapmergeMap

运营商,但我得到

RangeError:无效的数组长度

组件中的代码:

顺便说一句:我可以通过删除 fetchData 函数中的这个注释部分来使其工作,并且只返回 get 请求而不使用管道另一个运算符,但我想试一试并在服务中进行。任何想法为什么它不起作用?