2017-06-19 3 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" */ 
関連する問題