2016-04-19 4 views
0

いくつかのRxJを習得しながらこの問題が発生しました。演算子チェーンをオブジェクトで開始し、フラットマップを使用してAJAXリクエストを行うにはプロパティのooeを使用しますが、Ajaxの結果とともに渡される他のオブジェクトのプロパティが必要です。私は以下の解決策を提示しましたが、よりエレガントで効率的な解決方法が必要であると確信しています。どのようにコードを改善するためのアイデア?一般的なパターンの面では、事前:)RxJsオペレータを通してデータを渡す

答えて

0

function fbInfo(ezfb){ 
const fbItems$ = Rx.Observable.from(lista) 
    .map(item => Object.assign({}, item, {query: `/${item.page}/feed?limit=1`})) 
    .do(x=>console.log(x)) 
    .flatMap(item => { 
     return Rx.Observable.fromPromise(ezfb.getLoginStatus().then((res)=>{return ezfb.api(item.query)})) 
       .withLatestFrom(Rx.Observable.from([item]),(res, it)=> Object.assign({}, res, it)) 
    }).map(item => { return {    
     mensaje: item.data[0].message, 
     id: item.data[0].id, 
     created: item.data[0].created_time, 
     nombre: item.nombre 
     } 
    }) 
return fbItems$ 
} 

おかげで、私はあなたが(あなたが持っているように)各工程を経ておきたいものを運ぶに過ぎないきれいな方法を知っています。特定の構文に関しては、あなたが望むものを表現するための方法がより短いです。厄介な=> { return { ... } }の構文は、=> ({ ... })に置き換えることができます。同じオブジェクトのルートに本当にプロパティが必要な場合以外は、Object.assignを削除することができます。しかし、データの流れは基本的に同じです。

関連する問題