2016-04-19 89 views
0

同時學習了一些RxJs我遇到了這個問題。我用一個對象啓動我的運算符鏈,並使用它的屬性的ooe來使用平面映射來執行AJAX請求,但我需要將其他對象的屬性與Ajax結果一起傳遞。我帶來了以下解決方案,但我確定必須有一種更優雅或更高效的解決方案。任何關於如何改進代碼的想法?通過RxJs運營商傳遞數據

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$ 
} 

感謝提前:)

回答

0

在一般模式而言,我知道的並不比揹着你想保留通過每個階段(你有)什麼更清潔的方式。根據具體的語法,是的,有更短的方式來表達你想要的。尷尬=> { return { ... } }語法可以替換爲=> ({ ... })。除非您真的需要同一對象根目錄上的屬性,否則您可以取消Object.assign。但是數據流將基本相同。