const a = [1, 2, 3, 4, 5, 6, 7,8]; rxjs.from(a.splice(0, 3)) .pipe( rxjs.concatMap(val => { return rxjs.of(val).pipe(rxjs.delay(Math.random() * 1000)); }), rxjs.repeatWhen(completed => completed.pipe(rxjs.delay(2000))), rxjs.tap(val => { console.log(a); }), rxjs.takeWhile(val => a.length > 0) ) .subscribe(() => {}); <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.5.5/rxjs.umd.min.js"></script>En lo anterior, supongo que consolará.log [4,5,6], y luego [7,8], y luego se detendrá, pero aunque siempre consola.log [4,5,6]。 Me pregunto por qué es y como lograr lo que quiero. ¡Gracias!
Tienes que llamar empalme dentro de la tubería.
const a = [1, 2, 3, 4, 5, 6, 7,8]; rxjs.from(a.splice(0, 3)) .pipe( rxjs.concatMap(val => { return rxjs.of(val).pipe(rxjs.delay(Math.random() * 1000)); }), rxjs.repeatWhen(completed => completed.pipe(rxjs.delay(2000))), rxjs.tap(val => { console.log(a); a.splice(0, 3); }), rxjs.takeWhile(val => a.length > 0) ) .subscribe(() => {}); <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.5.5/rxjs.umd.min.js"></script>