2016-09-23 77 views
1

我正在編寫一個Javascript應用程序以從傳感器獲取數據。我開始使用ES6承諾+發電機使用藍鳥bluebird.cororutine在(客戶端和服務器),但它不能正常工作。用於(多個事件)用例的RxJS +(異步/等待)

,我被告知,承諾並沒有(多重事件)正常使用案例,而另一種可能是RxJS

我看了RxJS,它看起來可以像承諾一樣做,但更好。 我想用發電機(異步/等待)來編寫異步代碼看作同步,和我的問題是:

我可以使用RxJS +(異步/等待)或RxJS早已自己的方式做(async/await)相同嗎?

謝謝

回答

0

異步/等待不是ES6的一部分,它計劃在ES7。所以你可能不會很快用JavaScript來使用它。 TypeScript supports async/await for ES5 since 2.1

它認爲你將能夠使用RxJS與異步/等待它出來時。異步/等待與Promises協同工作,就像RxJS一樣,儘管它主要適用於Observables。有些方法如Observable.toPromise()將觀測值轉換爲承諾,大多數觀測值也接受承諾作爲參數。

所以我認爲兩者都可以很好地互換(我沒有親自嘗試過)。

如果您的主要興趣是讓您的代碼更具可讀性,那麼RxJS是減少回調地獄的好選擇。

這兩個示例顯示如何使用Observable.concatMap() operator按順序調用多個HTTP請求。這兩個示例都是用TypeScript編寫的,但它在ES6中也應該基本相同。爲你解答

+0

感謝:此外,這些示例使用新RxJS實現(https://github.com/ReactiveX/RxJS)。 :)。指向asyn /等待你可以與babel一起使用它,並且藍鳥具有相同的協同方法。 –

+0

@ToniBenitez有趣的是,我不知道:) https://babeljs.io/docs/plugins/transform-async-to-generator/ – martin