我正在编写一个Javascript App来从传感器获取数据。我开始在 Bluebird 和 Bluebird.cororutine 中使用 ES6 Promises + Generators (客户端和服务器),但它没有工作得很好。
我被告知Promises在(多事件)用例中无法正常工作,并且替代方案可能是 RxJS 。
我已经看过RxJS了,它看起来可以和Promises一样,但更好。 我想使用生成器( async / await )来编写异步代码以显示为同步,我的问题是:
我可以使用 RxJS +(async / await),还是RxJS已经有了自己的方式(async / await)?
由于
答案 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):