【问题标题】:RxJS + (async/await) for (multiple-event) use casesRxJS + (async/await) 用于(多事件)用例
【发布时间】:2016-09-23 11:23:18
【问题描述】:

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

我被告知 Promises 在(多事件)用例中无法正常工作,而替代方案可能是 RxJS

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

我可以使用 RxJS + (async/await) 还是 RxJS 已经有自己的方式来做与 (async/await) 相同的事情?

谢谢

【问题讨论】:

    标签: javascript asynchronous async-await rxjs bluebird


    【解决方案1】:

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

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

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

    如果你的主要兴趣是让你的代码比 RxJS 更具可读性,那么 RxJS 是减少回调地狱的好选择。

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

    【讨论】:

    猜你喜欢
    • 2018-02-01
    • 2020-03-26
    • 2023-03-16
    • 2016-10-03
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    相关资源
    最近更新 更多