私はループ内で作成されたobservablesの配列を持っています。そして、merge
を使用してこれらの観測値をすべてマージし、マージした観測値にサブスクライブしました。私はそれがどこで作成されたか(ループ内で)観測可能なコンテキストを取得する方法を見つけることができませんでした。 @martinは、この結合し、何の問題私が解決しようとしていますので、私は本当の問題を説明することを目的について尋ねられたので、ここではコードRxjsはobservableが作成された場所のコンテキストをバインドします
let observable = Rx.Observable.bindNodeCallback(request);
let streams = _(['a', 'b', 'c', 'd'])
.someMoreLodashStuff()
.map(val => {
// HERE SOMEHOW I WANT TO BIND CONTEXT (e.g. loop val),
// SO THAT SUBSCRIBER CAN KNOW THE EXACT LOOP STATE
// WHEN RECEIVING RESULT
return observable(mutate(val))
})
.value();
Rx.Observable
.merge(...streams)
.subscribe(
(res) => {
// HERE I WANT TO GET CONTEXT (e.g. val)
}, (err) => {
// HERE I WANT TO GET CONTEXT (e.g. val)
},
() => {
//on complete stuff
});
更新(@martinで尋ねたとして)
です。
Puposeと本当の問題
私はそのタイトルを取得し、HTMLでそれらをレンダリングして戻ってユーザーにHTMLを返し、(クエリのparamsとして渡された)ウェブサイトのリストをクロールしようとしています。これは私のopen source repoの一部で、node.jsのコールバック、async.jsの滝と約束を使ってこの正確な問題を解決しました。今rxjsを使ってそれを解決します。さまざまな非同期技術を学ぶための単なる方法です。これは、この問題
最初のマップ()から 'this'を返すことができます。私はこれが何をすべきか、あなたが解決しようとしている問題を理解していません。なぜ、サブスクライブすると、map()演算子のどこかで使用されているコンテキストを知る必要がありますか? – martin
@martinが質問を更新しました。実際の問題をよりよく理解することができたと思います。最初の 'map'から' this'を返すとObservablesが期待されるため、 'Rx.Observable.merge()'が失敗することがわかります。 – hhsadiq
私はあなたがgithub(@martinsik)であなたにタグを付けました。私はそれがあなたの質問に対するより良い答えを与えるかもしれないことを願っています。 – hhsadiq