当前位置: 首页 > 知识库问答 >
问题:

Angular 2:序列和并行服务调用

汝和裕
2023-03-14

我遇到了一个顺序和并行服务调用的主题。对于序列调用,我们可以使用FlatMap/MergeMap;对于并行调用,我们可以使用ForkJoin。

以下是我的问题

1)flatmap和MergeMap的区别是什么?使用这两种方法有什么特别的原因吗。

2)如何为4-5个调用添加多个序列?如果我使用多个订阅,那么flatmap和mergemap有什么区别?

this.service1.getCountry(
  .mergeMap(country => this.service1.getState(country[0]))
  .subscribe(state = > state.json());
);

3)forkjoin用于连接多个并行服务调用。如果我使用一个方法,并在该方法中调用多个服务,而不是使用forkjoin怎么办?使用forkjoin的具体原因是什么

共有1个答案

薄兴昌
2023-03-14

>

  • flatmap===mergemap。flatMap只是mergeMap运算符别名。(https://github.com/reactivex/rxjs/blob/master/src/add/operator/mergemap.ts#l5-l6)有人讨论不推荐使用一个别名,但到目前为止,这两个别名在v5中都可用。

    您可能对mergemap运算符(https://github.com/reactivex/rxjs/blob/master/spec/operators/mergemap-spec.ts#L308-L325)中的concurrency参数感兴趣,该运算符订阅了多个内部可观察值。

    这取决于使用情况。如果提供可观察的高强度发射并等待完成,则forkJoin可能是可行的。但是,如果任何一个可观察到的完成没有发射,则forkJoin将缩短并完成。相反,mergeMap更多地是为了将内部可观测的发射平坦化到更高的可观测的发射。因此,在forkJoin的情况下,您将获得每个innerobservables的值emisssion数组,而mergeMap将在每个InnerObservable发出后立即发出单个值。

  •  类似资料:
    • 我开始了一个新的项目Angular2(客户端)和节点JS(服务器端)技术。 我已经使用和创建了一个RESTful API。输入特定URL时,将显示匹配的Json响应。到现在为止,一直都还不错。 现在我正试图在这个过程中积分Angular 2。我已经创建了这个应用程序。组成部分显示页面时,组件未加载,我得到了一些404代码: 这是我的项目结构: 我的包裹。json: 还有我的索引。ts(服务器):

    • 我想知道如何对REST或Web服务进行几个并行调用,然后加入响应并将其发送到调用@RestController的响应中。 类似于下面的代码构建与比较未来,但Reactor(通量,单声道)。

    • 我将以下响应返回给用户 到目前为止,我正在进行三次连续调用来计算这个,每个调用都可以独立于其他调用运行。我尝试制作三种不同的作为: 如果我做了

    • (3)我理解序列图是基于UML,但是UML在什么方面是一种“语言”?它没有文本表示,对吧?它似乎更多的是一种图解的方式,比如流程图。

    • 我们有任务需要安排处理。每个任务由两部分组成,需要按顺序执行。第一个任务由互斥锁保护,因此一次只能执行一个任务。第二部分没有这样的约束,任何数量的任务都可以同时执行。对于任务,我们知道它需要在每个部分花费多少时间,即mi用于受保护的部分,ai用于可以并行执行的部分。 问题是找到任务的排列,以便最小化执行所有任务所需的时间。 我的直觉告诉我,这可以通过贪婪算法来解决,方法是按i的降序安排任务。 例如

    • 我正在尝试使用Angular2和Http POST对SOAP web服务进行一个非常简单的调用。如果我使用POSTMAN发布相同的消息,只需将内容类型设置为text/xml即可。 对于Angular2,我得到了以下错误:- SEC7120:原点http://localhost:3004在Access Control Allow Origin标头中找不到 SCRIPT7002: XMLHttpReq