[解決済み] なぜflatMapが必要なのか?
質問
RxJSを使い始めているのですが、この例でなぜ
flatMap
または
concatAll
配列の配列はどこにあるのでしょうか?
var requestStream = Rx.Observable.just('https://api.github.com/users');
var responseMetastream = requestStream
.flatMap(function(requestUrl) {
return Rx.Observable.fromPromise(jQuery.getJSON(requestUrl));
});
responseMetastream.subscribe(url => {console.log(url)})
どなたか視覚的に説明できる方がいらっしゃれば、大変助かります。
どのように解決するのですか?
を見始めたとき、私は
Rxjs
もその石につまずきました。役に立ったのは次のようなことです。
-
reactivex.ioのドキュメント。例えば
flatMap
: http://reactivex.io/documentation/operators/flatmap.html -
rxmarbles からのドキュメント。
http://rxmarbles.com/
. あなたは
flatMap
を探す必要があります。mergeMap
を代わりに見なければなりません(別の名前)。 - は、あなたが見逃していたRxの入門書です。 https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 . これは非常に似たような例を扱っています。特に、プロミスが1つの値だけを出力するobservableに似ているという事実を扱っています。
-
最後に、RxJavaからの型情報を見てみましょう。Javascript が型付けされていないことは、ここでは役に立ちません。基本的に、もし
Observable<T>
が型Tの値をプッシュする観測可能なオブジェクトを表すなら、次にflatMap
型の関数を取ります。T' -> Observable<T>
を引数として取りObservable<T>
.map
は型の関数を取ります。T' -> T
を返しObservable<T>
.あなたの例に戻って、あなたはURL文字列から約束を生成する関数を持っています。そこで
T' : string
で、そしてT : promise
. そして、先ほどの話からpromise : Observable<T''>
ということでT : Observable<T''>
である。T'' : html
. そのプロミス生成関数をmap
に置くと、以下のようになります。Observable<Observable<T''>>
であるべきなのにObservable<T''>
である場合、observable からはhtml
の値を出したい。flatMap
の結果を平坦にする(観測可能な層を取り除く)ため、このように呼ばれます。map
. あなたのバックグラウンドによっては、これは中国語かもしれませんが、ここからの情報をタイプし、図面を書くことで、すべてが明確になりました。 http://reactivex.io/documentation/operators/flatmap.html .
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法