非同期処理 オブザーバブル コンビネーター関数、組合せ
入門JavaScriptプログラミング (JD Isaacks(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(非同期処理)、LESSON 33(オブザーバブル)、33.5(練習問題)、Q33-1の解答を求めてみる。
コード
function collect(obs$) {
const values = [];
return new Observable(
observer => {
obs$.subscribe({
next(val) {
values.push(val);
observer.next(values);
}
});
}
);
}
function sum(obs$) {
return new Observable(
observer => {
obs$.subscribes({
next(values) {
observer.next(
values.reduce((a, b) => a + b)
);
}
});
}
);
}
sum(collect(Observable.of(1, 2, 3, 4)))
.subscribe({
next(val) {
console.log(val);
}
})