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

有人告诉我Promises在(多事件)用例中无法正常工作,并且可以选择使用RxJS。

我看过RxJS,看起来可以做与Promises一样的东西,但效果更好。
我想使用生成器(异步/等待)来编写异步代码以使其看起来像同步,而我的问题是:

我可以使用RxJS +(async / await)还是​​RxJS已经拥有与(async / await)相同的方法?

谢谢

最佳答案

异步/等待不是ES6的一部分,它计划在ES7中使用。因此,您可能不会很快在JavaScript中使用它。 TypeScript supports async/await for ES5 since 2.1

它认为您可以将RxJS与async / await一起使用。异步/等待与Proxes一起使用,就像RxJS一样,即使它主要与Observables一起使用。有诸如Observable.toPromise()之类的方法可将Observable转换为Promises,大多数Observable也接受Promise作为参数。

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

如果您的主要目的是使您的代码比RxJS更具可读性,那么减少回调地狱是一个不错的选择。

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


Angular 2 + rxjs - how return stream of objects fetched with several subsequent http requests
How to use exhaustMap in ReactiveX/rxjs 5 in TypeScript

10-06 04:07
查看更多