RxJS awaitをRxJSを書き直す
awaitの連続。
(async () => { let foo = await getPromise() foo = await getPromise(foo) foo = await getPromise(foo) cl(foo) // 3 })() function getPromise(v = 0) { return new Promise((resolve) => { setTimeout(() => resolve(v + 1), 1000); }); }
thenのメソッドチェーンで書き換え。
let bar = getPromise()
.then(getPromise)
.then(getPromise)
.then(cl)
subscribeメソッドの入れ子。見た目が良くない。
obs() .subscribe((v) => { obs(v).subscribe((v) => { obs(v).subscribe(cl) }) }) function obs(v = 0) { return rx.Observable.create((observer) => { setTimeout(() => { observer.next(v + 1) observer.complete() }, 1000) }) }
これが本命。mergeMapを使う。
obs() .pipe( op.mergeMap(obs), op.mergeMap(obs), ) .subscribe(cl)