首页 > 解决方案 > 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 或/并在此处回答。两者都受欢迎。谢谢!!

标签: angularasynchronousionic-frameworkrxjs

解决方案


RXJs 提供了一些不错的东西,例如可重放/可共享的调用,例如映射数据或合并异步数据的管道机制,因为 JavaScript 在检索数据方面存在一些问题,尤其是日期格式和持续时间,通常需要某种转换。

异步等待风格非常简单,但缺乏一点“自由”来拦截/转换从服务器(例如 Spring)检索到的异步数据,这导致您需要维护大量额外代码。

大反面:RxJs 的学习曲线有点烦人,因为当你使用过多的管道时,你会创建一些意大利面条代码。但迟早复杂的管道更有意义,看起来不像意大利面条代码。

此外,异步等待模式仍然以一种或另一种方式存在,它只是“调用和订阅”,但另外你可以更好地控制值如何到达、如何处理它们、如何进行相关的异步调用(aync 值 A取决于来自 async Value B) 的数据以及您如何处理错误,使用较少的样板代码。


推荐阅读