@rifo/rxjs-polling
Version:
RxJS HTTP Polling
16 lines • 2.53 kB
JavaScript
import { BehaviorSubject, concat, of } from 'rxjs';
import { delay, skip, switchMap, tap } from 'rxjs/operators';
/**
* Polling when data is resolved
* @param httpRequest$ any http request.
* @param delayMs delay in ms
*
* Inspire by https://blog.strongbrew.io/rxjs-polling/
*/
export function pollingOnResolved(httpRequest$, delayMs = 0) {
const polling$ = new BehaviorSubject({});
const rePolling$ = of('').pipe(delay(delayMs), tap(() => polling$.next({})), skip(1));
const httpPolling$ = concat(httpRequest$, rePolling$);
return polling$.pipe(switchMap(() => httpPolling$));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy1wb2xsaW5nLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJpZm8vcnhqcy1wb2xsaW5nLyIsInNvdXJjZXMiOlsibGliL3J4anMtcG9sbGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxZQUE2QixFQUFFLE9BQU8sR0FBRyxDQUFDO0lBQzFFLE1BQU0sUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFDZCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUM1QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbmNhdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBza2lwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBQb2xsaW5nIHdoZW4gZGF0YSBpcyByZXNvbHZlZFxuICogQHBhcmFtIGh0dHBSZXF1ZXN0JCBhbnkgaHR0cCByZXF1ZXN0LlxuICogQHBhcmFtIGRlbGF5TXMgZGVsYXkgaW4gbXNcbiAqXG4gKiBJbnNwaXJlIGJ5IGh0dHBzOi8vYmxvZy5zdHJvbmdicmV3LmlvL3J4anMtcG9sbGluZy9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvbGxpbmdPblJlc29sdmVkKGh0dHBSZXF1ZXN0JDogT2JzZXJ2YWJsZTxhbnk+LCBkZWxheU1zID0gMCk6IE9ic2VydmFibGU8YW55PiB7XG4gIGNvbnN0IHBvbGxpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIGNvbnN0IHJlUG9sbGluZyQgPSBvZignJykucGlwZShcbiAgICBkZWxheShkZWxheU1zKSxcbiAgICB0YXAoKCkgPT4gcG9sbGluZyQubmV4dCh7fSkpLFxuICAgIHNraXAoMSlcbiAgKTtcbiAgY29uc3QgaHR0cFBvbGxpbmckID0gY29uY2F0KGh0dHBSZXF1ZXN0JCwgcmVQb2xsaW5nJCk7XG4gIHJldHVybiBwb2xsaW5nJC5waXBlKHN3aXRjaE1hcCgoKSA9PiBodHRwUG9sbGluZyQpKTtcbn1cbiJdfQ==