通过RxJs运算符传递数据

时间:2016-04-19 07:45:50

标签: rxjs

在学习一些RxJ时,我遇到了这个问题。我用一个对象启动我的操作符链,并使用它的属性ooe来使用flatmap来执行AJAX请求,但是我需要将其他对象的属性与Ajax结果一起传递。我带来了以下解决方案,但我确信必须有一种更优雅或更有效的解决方案。关于如何改进代码的任何想法?

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

提前致谢:)

1 个答案:

答案 0 :(得分:0)

就一般模式而言,我知道没有比通过每个步骤携带任何你想要保留的东西更清洁的方式(就像你一样)。就具体语法而言,是的,有更短的方式来表达你想要的东西。笨拙的=> { return { ... } }语法可以替换为=> ({ ... })。除非您确实需要同一对象的根目录上的属性,否则您可以取消Object.assign。但数据流基本上是相同的。