(多事件)用例的RxJS +(async / await)

时间:2016-09-23 11:23:18

标签: javascript asynchronous async-await rxjs bluebird

我正在编写一个Javascript App来从传感器获取数据。我开始在 Bluebird Bluebird.cororutine 中使用 ES6 Promises + Generators (客户端和服务器),但它没有工作得很好。

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

我已经看过RxJS了,它看起来可以和Promises一样,但更好。 我想使用生成器( async / await )来编写异步代码以显示为同步,我的问题是:

我可以使用 RxJS +(async / await),还是RxJS已经有了自己的方式(async / await)?

由于

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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