2017-06-19 123 views
0

如何在rxjs中使用Observables实现以下代码?如何实现以下使用rxjs Observables?

我想在这里实现的是,我有一个函数数组,每个函数接受一个对象,修改它并将对象返回到堆栈中的下一个函数。

function A(res:SomeType){ 
    //Do Something 
    return res; 
} 

function B(res:SomeType){ 
    //Do Something 
    return res; 
} 

function C(res:SomeType){ 
    //Do Something 
    return res; 
} 

let fnPipe = []; 

fnPipe.push(A); 
fnPipe.push(B); 
fnPipe.push(C); 

obj= {key:"val"}; 

fnPipe.forEach((fn)=>{ 
    obj= fn(obj); 
}); 
console.log(obj); 

我该如何在rxjs中使用observables实现相同的功能?

+1

我真的不明白你为什么要这么做可观察 – Maxime

回答

1
let fn$ = Observable.from([ 
    x => x + "a", 
    x => x + "b", 
    x => x + "c" 
]) 
let value$ = Observable.of("x", "y", "z") 

value$ 
    .concatMap(val => fn$.scan((acc, fun) => fun(acc), val)) 
    .subscribe(console.log) 

/* prints 
"xa" 
"xab" 
"xabc" 
"ya" 
"yab" 
"yabc" 
"za" 
"zab" 
"zabc" */