RxJS Promise.all()はforkJoinで書き換え
Promise.all()。
すべてのPromiseが発火されるのを待つ。
let foo1 = getPromise(123) let foo2 = getPromise('abc') Promise.all([foo1, foo2]) .then(cl) // [123, 'abc']
forkJoinで書き換えられる。
let bar1 = rx.interval(100).pipe(op.take(1)) let bar2 = rx.interval(1000).pipe(op.take(1)) rx.forkJoin(bar1, bar2) .subscribe(cl) // 1秒後に[0, 0]
pipeの中で使いたい場合は、mergeMapを使う。
rx.interval(1000).pipe(op.take(1)) .pipe( op.mergeMap(v => { let foo1 = rx.interval(100).pipe(op.take(1)) let foo2 = rx.interval(1000).pipe(op.take(1)) return rx.forkJoin(foo1, foo2) }) ) .subscribe(cl) // 2秒後に[0, 0]
共通メソッド。
function getPromise(v = 0) { return new Promise((resolve) => { setTimeout(() => resolve(v), 1000); }); } function cl(v) { console.log(v) }