javascript - RxJS +(异步/等待)用于(多事件)用例

标签 javascript asynchronous async-await rxjs bluebird

我正在编写一个 Javascript 应用程序来从传感器获取数据。我开始在客户端和服务器中使用 BluebirdBluebird.cororutine 来使用 ES6 Promises + Generators ,但效果不佳.

有人告诉我,Promise 在(多事件)用例中无法正常工作,替代方案可以是 RxJS

我查看了 RxJS,它看起来可以做与 Promise 相同的事情,甚至更好。 我想使用生成器(async/await)来编写异步代码以使其看起来像同步,我的问题是:

我可以使用RxJS + (async/await) 或 RxJS 已经有自己的方式来执行与 (async/await) 相同的操作?

谢谢

最佳答案

Async/await 不是 ES6 的一部分,它是 ES7 的一部分。所以你可能不会很快在 JavaScript 中使用它。 TypeScript supports async/await for ES5 since 2.1 .

当 RxJS 发布时,您将能够将其与 async/await 一起使用。 Async/await 与 Promises 一起使用,就像 RxJS 一样,尽管它主要与 Observables 一起使用。有诸如 Observable.toPromise() 之类的方法可以将 Observable 转换为 Promise,并且大多数 Observable 也接受 Promise 作为参数。

所以我认为两者都可以很好地互换(我个人还没有尝试过)。

如果您的主要兴趣是让代码比 RxJS 更具可读性,那么这是减少回调 hell 的不错选择。

这两个示例展示了如何使用 Observable.concatMap() operator 按顺序调用多个 HTTP 请求。这两个示例都是用 TypeScript 编写的,但它应该基本相同 ES6也是如此。这些示例还使用新的 RxJS 实现 ( https://github.com/ReactiveX/RxJS ):

关于javascript - RxJS +(异步/等待)用于(多事件)用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39659578/

相关文章:

c# - 结果类型未知的任务

javascript - 带有 Sequelize 的 Node.js 数据库模块

Javascript 并将正数和负数四舍五入到最接近的 1000

javascript - 用于处理用户导入时重复文件名的架构?

java - GWT 2.6 的用户代理?

c++ - 异步服务器在没有明显原因的情况下停止从客户端获取数据

javascript - nodejs 一致性哈希库

javascript - 无法使用 RxJS 中的计时器完成比赛

asp.net-mvc-2 - ASP.NET MVC 2 关于异步 Controller 的问题

Angular 6 Async-await 无法处理 http 请求