首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Rxjs SwitchMap 的一些容易犯的错误和替代方案

我们考虑一下是否能用如下的 Operator 来替代 SwitchMap. mergeMap/flatMap 如果 switchMap 被 mergeMap 替换,则 effect 的代码将同时处理每个调度的动作...switchMap 每当调度相同类型的操作时,使用 switchMap 将看到挂起的后端请求中止。这使得 switchMap 对于创建、更新和删除操作不安全。但是,它也可能为读取操作引入错误。...switchMap 是否适用于特定的读取操作取决于在分派另一个相同类型的操作后是否仍需要后端响应。让我们看一下使用 switchMap 会引入错误的操作。...switchMap 应该只在效果/史诗中用于读取操作,并且仅在分派另一个相同类型的操作后不需要后端响应时使用。 让我们看一下一个实用的 switchMap 使用场景。...将 switchMap 用于处理 GetCartTotal 操作的做法是完全合适的。

93730

combineLatest 使用的一个陷阱和基于 debounceTime 的解决方案

然后我们使用 switchMap 根据这些值从后端获取数据以获取 pokemon$。...因为我们使用了switchMap,如果一个调用还没有结束,那么当一个新的调用通过改变limit或者offset来发起一个新的调用时,前一个调用就会被取消。...这个动作的效果是 combineLatest 创建的流触发了两次,因此启动了两个后端请求,另一方面,由于我们使用了 switchMap,立即取消了一个。...获取这些值并订阅触发后端调用的流 偏移量设置为 0 combineLatest 看到一个新的 offset 值,并发出一个新的组合,limit = 5,offset = 0 switchMap 获取这些值...这将确保只有最后一个值被传递给 switchMap,并且在调用堆栈被清除之后。 每当提到“在同一个调用堆栈中”时,都可以将其替换为“在事件循环的同一轮次中发生的更改”。

97910

浅谈前端响应式设计(二)

在 Observable中我们可以通过 switchMap操作符处理异步问题,一个异步搜索看起来会是这样: input$.pipe(switchMap(keyword => Observable.ajax...而要聚合多个数据源并做异步处理时: combineLatest(foo$, bar$).pipe( switchMap(keyword => fromPromise(someAsyncOperation...switchMap当上游有新值到来时,会忽略结束已有未完成的 Observable然后调用函数返回一个新的 Observable,我们只使用一个函数就解决了并发安全问题。...当然,我们可以根据实际需要选用 switchMap、 mergeMap、 concatMap、 exhaustMap等。 而对于时间轴的操作, Rxjs也有巨大优势。...我们可以非常方便地根据 Action去处理副作用: action$.pipe( ofType('ACTION_1'), switchMap(() => { // ... }),

1K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券