rxjs中concatAll

rxjs中concatAll

请问rxjs里面的concatAll在不使用其他运算符与使用其他运算符如何解决内存积压问题?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
Brian 2024-08-23 20:52:33

请问rxjs里面的concatAll在不使用其他运算符与使用其他运算符如何解决内存积压问题?

——从自己写代码与对逻辑的理解上,不要让上游的observable发出过多的数据,不要让这个concatAll处理过多的observable

  • 提问者 慕粉3946981 #1

    内存积压指的不是高阶 observable 发出了过多的内部 observable。

    而是指高阶 observable 发出的内部observable 速度要比内部 observable发出的值速度快,这样后续高阶 observable 发出的内部 observable 都会被缓存起来。

    要解决也很简单就使用个 bufferTime 或 windowTime 来控制高阶 observable 发出值的速度,拥有时间块+时间块生成的速度来选择性的判断是否丢弃或不丢弃上游高阶 observable 发出的值。

    2024-08-24 18:11:59
  • 提问者 慕粉3946981 #2

    或者直接使用一个 mgerAll 就可以解决这个问题,高阶 observable发出一个内部 observable,内部就订阅了, mergeAll 还可以控制同时订阅的数量

    2024-08-24 18:16:00
  • Brian 回复 提问者 慕粉3946981 #3

    对的,要么控制Observable的产生速度,要么增加处理速度,buffer与window操作符的逻辑是类似的。


    mergeAll可以同时处理,也是减少积压的一种方式,还可以看看switchMap,这个是可以取消之前的订阅,也是避免过多的Observable同时存在。

    细节~要像同学你学习。


    平时我们用rxjs的时候,并未关注这么深层的东西,可能更多的时候用的只是对事件流的处理~

    2024-08-27 16:50:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

前端高级工程师-大前端
  • 参与学习       324    人
  • 解答问题       407    个

全新打造“技术成长&职业破局”双高体系,深度打通“全栈 + 全流程 +多端+ 提效+AI赋能”,递进式锤炼思维与高阶技能,高效实现能力跃迁,助力成为“驾驭全局,深广兼备,打通多端全栈”的高级工程师

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师