Skip to content

Instantly share code, notes, and snippets.

@irrationnelle
Last active January 17, 2020 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save irrationnelle/ef87923a7ffe27178650588926ee8351 to your computer and use it in GitHub Desktop.
Save irrationnelle/ef87923a7ffe27178650588926ee8351 to your computer and use it in GitHub Desktop.
import { from, Observable } from 'rxjs';
import { bufferCount, concatMap, last, mergeMap, scan } from "rxjs/operators";
class Test {
someArray = [1,2,3,4,5,6,7,8,9,10,11,12];
constructor() {
from(this.someArray).pipe(
bufferCount(3),
concatMap(this.controlChunk),
scan((acc: number[], curr: number) => [...acc, curr], []),
last()
).subscribe(console.log)
}
controlChunk = (chunk: number[]): Observable<number> =>
from(chunk).pipe(
mergeMap(this.delayedPromise),
)
delayedPromise = (n: number): Promise<number> => new Promise((resolve => {
setTimeout(() => {
resolve(n+1)
}, this.getRandomArbitrary(100, 1000))
}));
getRandomArbitrary = (min: number, max: number): number => Math.random() * (max - min) + min;
}
const test = new Test();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment