現在、私はRxJで目を覚ましており、観測対象を返すモジュールを定義しようとしています。 (各モジュールはブラックボックスとして動作し、オブザーバビリティのみを公開します)。 私の主な問題は、私が使用しているサードパーティのライブラリによるものです:UWA: 私のすべてのDOM要素はUWAオブジェクトから生成され、UWAの "イベント"を引き起こします。 私はこれらのカスタムイベントをオブザーバブルにマッピングしたいと思います。ここ は、イベントデータ構造の一部である:ここでRxJを使用して複数のコールバックを観測可能にマップする
tabBar = *somecode*...{
....
onEndEditTab: function (callback) {
return this.modelEvent.subscribe({
event: endEditTabEvent
}, callback);
},....
}
は私の現在のコードです:
const tabBar = new tabBar();
tabBar.inject(domContainer);
const observer={
next: (t) =>{
const oldValue=t.target.textContent;
const cbObservable = Rx.Observable.bindCallback(tabBar.onEndEditTab);
//a new cbObservable is created at each dblclick event
// (due to bindCallBack property which is to retern only one time.
cbObservable .call(tabBar).subscribe(
(v) => {
console.log({oldLabel:oldValue,newLabel:v[0].button.label});
}
);
Rx.Observable.fromEvent(tabBar, 'dblclick').subscribe(observer);
このコードは、タブのラベルが編集されるたびに動作し、古いものと新しい値を記録します。 しかし、私が望むのは、これを印刷するのではなく、すべての結果を新しいObservableストリームに集約することです。
dblclick : ----(1)----(2)---....(n)->
(nはDBLCLICKの未知数がある場合...) にマップされます:
cbObservable : ----(1:{old,new})--|
----(2:{old,new})--|
....
----(n:{old,new})--|
そして、何私は現在したいことは次のとおりです。
outputStream : ----(1:{old,new})---(2:{old,new})--...(n:{old,new})--->
大理石の図を用いて
ここで、outputStreamはホット観測可能です。 には、上記のすべての制約があります。 ありがとうございます!それが働いていた1簡単な修正した後、あなたの答えをありがとう:
定義に従って:その入力と出力が *観測されないので、 'bindCallback'は、オペレータではありません。入力はいくつかのパラメータを持つ 'func'関数ですが、 *が実行されたときに' func'が呼び出すコールバック関数でなければなりません。 質問が多いので、この出力を観測可能なものに変換する方法は? – occimort