angular - RxJS 和 Async/Await:如何比较两者?
问题描述
我是一名 Angular/Ionic 开发人员,最近我在 Async/Await 模式方面遇到了一些问题,导致对我做事方式的重新评估。我的一个朋友说 RxJS 库是处理异步调用的好工具,所以我研究了 RxJS 提供的所有东西。
问题是,我想以相同的方式比较两者,以便我的其他一些开发人员朋友可以看到为什么 RxJS 方式更好或为什么不是。
为了展示这一点,我制作了一个 github 存储库(https://github.com/gdinn/rxjs-comparative)。
我对异步等待部分有一些疑问。我需要做一些并发调用,当两者都完成时,需要解除加载,但不使用逻辑来保持通量。
两种实现的文件是: https ://github.com/gdinn/rxjs-comparative/blob/master/src/app/home/home.page.ts
随时 PR 我的 repo 或/并在此处回答。两者都受欢迎。谢谢!!
解决方案
RXJs 提供了一些不错的东西,例如可重放/可共享的调用,例如映射数据或合并异步数据的管道机制,因为 JavaScript 在检索数据方面存在一些问题,尤其是日期格式和持续时间,通常需要某种转换。
异步等待风格非常简单,但缺乏一点“自由”来拦截/转换从服务器(例如 Spring)检索到的异步数据,这导致您需要维护大量额外代码。
大反面:RxJs 的学习曲线有点烦人,因为当你使用过多的管道时,你会创建一些意大利面条代码。但迟早复杂的管道更有意义,看起来不像意大利面条代码。
此外,异步等待模式仍然以一种或另一种方式存在,它只是“调用和订阅”,但另外你可以更好地控制值如何到达、如何处理它们、如何进行相关的异步调用(aync 值 A取决于来自 async Value B) 的数据以及您如何处理错误,使用较少的样板代码。
推荐阅读
- sql - SQL Pivot 在 26500 和 2650 之间需要显着的时间差异
- angular - 角模式验证预编译
- reactjs - React-Native:使用 FlatList ref 的 scrollToIndex 时出错
- json - 从openweathermap获取位置API时,类型'String'不是'index'类型'int'的子类型
- sql - LTRIM和LTRIM与RTRIM的区别
- android - 在 BottomSheetDialogFragment 中使用 VideoView 时,视频总是在顶部加载
- json - JQ Group 多个文件
- datastage - 作业完成后将作业信息插入统计表 DataStage
- apache - apache仅将重写规则应用于一个子目录
- typescript - nestjs pg 测试连接从 ConfigService 窗口映射 prod db