[解決済み] RxJSのシーケンスはpromise.then()と同等か?
質問
以前はpromiseを使ってよく開発していましたが、今はRxJSに移行しています。RxJSのドキュメントは、プロミスチェーンからオブザーバーシーケンスに移行する方法について、非常に明確な例を提供していません。
例えば、私は通常、次のような複数のステップでプロミスチェーンを書きます。
// a function that returns a promise
getPromise()
.then(function(result) {
// do something
})
.then(function(result) {
// do something
})
.then(function(result) {
// do something
})
.catch(function(err) {
// handle error
});
このプロミスチェインをRxJS流に書き直すとしたら、どうすればよいでしょうか?
どのように解決するのですか?
データフローの場合(相当する
then
):
Rx.Observable.fromPromise(...)
.flatMap(function(result) {
// do something
})
.flatMap(function(result) {
// do something
})
.subscribe(function onNext(result) {
// end of chain
}, function onError(error) {
// process the error
});
プロミスは、次のようにして observable に変換することができます。
Rx.Observable.fromPromise
.
いくつかのプロミス演算子は直訳が可能です.例えば
RSVP.all
または
jQuery.when
で置き換えることができます。
Rx.Observable.forkJoin
.
非同期にデータを変換し、プロミスではできないか非常に困難なタスクを実行することを可能にする演算子の束を持っていることに留意してください。Rxjsはデータの非同期シーケンス(シーケンスすなわち、1つ以上の非同期値)でそのすべての力を明らかにします。
エラー管理については、主題はもう少し複雑です。
- があります。 キャッチ と 最後に 演算子も
-
retryWhen
は、エラーが発生した場合にシーケンスを繰り返すのにも役立ちます。 -
を使えば、サブスクライバー自身のエラーに対処することもできます。
onError
関数で対処できます。
正確なセマンティクスについては、ウェブで見つけられるドキュメントや例をより深く見るか、ここで具体的な質問をしてみてください。
これは間違いなく、Rxjsでエラー管理をより深く行うための良い出発点でしょう。 https://xgrommx.github.io/rx-book/content/getting_started_with_rxjs/creating_and_querying_observable_sequences/error_handling.html
関連
-
[解決済み] jQueryを使用しない$(document).ready相当
-
[解決済み] printf/String.Formatに相当するJavaScriptの機能
-
[解決済み] jQueryのdocument.createElementと同等?
-
[解決済み] Angular/RxJS `Subscription` からいつ退会すればいいのか?
-
[解決済み】プロミスの値にアクセスする方法は?
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行