- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人,请用Javascript解释SwitchMap和FlatMap之间的区别(从 Angular 来看,rxjs 5)
在我的理解中。
切换 map 只发出最新的 observable 值并取消之前的 observable。
平面 map 收集所有单独的 observables 并在单个数组中返回所有 observables,而不关心 observable 的顺序。异步工作。
连接 map 保持顺序并发出所有可观察值,同步工作
那正确吗?
mergeMap 与上面的工作方式有何不同?
有人,请举例说明。
最佳答案
取自 previous answer :
flatMap
是 mergeMap
的别名和 flatMap
将在 RxJS 8 中删除。const { mergeMap, flatMap, concatMap, switchMap, exhaustMap } = Rx.operators;
const example = operator => () =>
Rx.Observable.from([0,1,2,3,4])
.pipe(
operator(x => Rx.Observable.of(x).delay(500))
)
.subscribe(console.log, () => {}, () => console.log(`${operator.name} completed`));
const mm = example(mergeMap);
const fm = example(flatMap);
const cm = example(concatMap);
const sm = example(switchMap);
const em = example(exhaustMap);
.examples > div {
cursor: pointer;
background-color: #4CAF50;
color: white;
padding: 7px 16px;
display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.8/Rx.js"></script>
<div class='examples'>
<div onClick='mm()'>mergeMap </div>
<div onClick='fm()'>flatMap</div>
<div onClick='cm()'>concatMap</div>
<div onClick='sm()'>switchMap</div>
<div onClick='em()'>exhaustMap</div>
</div>
关于javascript - rxjs 中的 flatMap、mergeMap、switchMap 和 concatMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49698640/
在我的情况下,首先可以并行执行多个请求,在这些请求完成后,另一个请求将与先前的结果一起发送,伪代码看起来像 let uploads$ = [obs1$, obs2$, obs3$]; Observab
我正在尝试使用 mergeMap在 rxjs6我收到了这个错误: Property 'mergeMap' does not exist on type 'Observable' 我试过了import
我完全不明白 mergeMap 的用途。我听说有两种解释: 这就像 .NET LINQ 中的 SelectAll() - 不。 它是 RxJS merge 和 map 的组合 - 不(或者我无法复制它
我有一个 Observable,其中每个新值都应该引起一个 HTTP 请求。在客户端,我只关心最新的响应值;但是,我希望每个请求都能完成以进行监控/等。目的。 我目前拥有的是这样的: function
遵循 Stack Overflow 帖子中描述的最佳实践:Angular RxJS When Should I Unsubscribe From Subscription ,考虑这个 Angular
当我使用 Angular HttpClient 发出 GET 请求时,我会得到一个 observable 并在 RxJS 运算符 mergeMap 中处理它。 现在它一次又一次地抛出 404,我想捕获
我有一个可观察的流。第一个运算符是一个 mergeMap,它返回一个可观察值数组。然后我必须有第二个 mergeMap 来从第一个 mergeMap 的返回中获取最终值。我觉得第二个 mergeMap
我有一个可观察的流。第一个运算符是一个 mergeMap,它返回一个可观察值数组。然后我必须有第二个 mergeMap 来从第一个 mergeMap 的返回中获取最终值。我觉得第二个 mergeMap
抽象问题 有没有什么方法可以按照外部可观察对象的原始顺序使用 mergeMap 的结果,同时仍然允许内部可观察对象并行运行? 更详细的解释 让我们看一下两个合并映射运算符: mergeMap ...它
尝试使用 http.get 请求 URL 将经度和纬度从地理位置服务提取到 list.service。 第一期: businesses Property 'businesses' does not e
TLDR:工作示例在这个问题的最后一个代码块中。查看 @bryan60 的答案,了解使用 concat 而不是 mergeMap 的工作示例。 我试图按顺序运行多个远程请求,但只执行了第一个可观察对象
我有两个相同效果的实现,并且都有效。我很难理解两者之间的差异,哪个更“正确”。 请在下面找到它们: 选项 1. IDE 无法确定 instance 的类型在最后 map . pollingSt
在此 mergeMap 的大理石图中, 你怎么读这个表达式? // Kind of, looks like an em-dash near the end mergeMap(i => 10*i--10
在 rxjs5 文档中,它提到“为了减少多态性并从运算符中获得更好的性能,一些运算符已被拆分为多个运算符”。它的实际含义是什么以及如何使用 mergeMapTo 运算符? 最佳答案 来自docs ,m
我试图理解为什么 Rxjs 的 mergeMap 在传入身份函数时会变平 of(['click', 'tap']) .pipe( mergeMap(_ => _), tap
我试图理解为什么 Rxjs 的 mergeMap 在传入身份函数时会变平 of(['click', 'tap']) .pipe( mergeMap(_ => _), tap
我看了一个关于如何在 2 个可观察对象上使用 mergeMap() 的教程,但我仍然不清楚如何将它与超过 2 个可观察对象一起使用。 教程链接如下: https://www.youtube.com/w
在 api 调用获取数据后,我需要在 FETCH_DATA_SUCCESS 上调用一些进一步的操作。 'RESET_IMAGE_DATA' 和 'INITIALISE_FILTERS' 操作必须在每次
我需要你的帮助:) 我使用了 angular 7 和 Rxjs。为了测试,我使用了 Jest。 我的组件在 2 个 httpClient 之间使用 MergeMap,就像这样: addPost() {
如何将 mergeMap 操作排入队列,以便只有在前一个操作完成后才执行一个又一个操作? 最佳答案 您需要使用 concatMap,而不是 mergeMap。 关于javascript - RxJs
我是一名优秀的程序员,十分优秀!