@rifo/rxjs-polling
Version:
RxJS HTTP Polling
17 lines • 2.63 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) {
if (delayMs === void 0) { delayMs = 0; }
var polling$ = new BehaviorSubject({});
var rePolling$ = of('').pipe(delay(delayMs), tap(function () { return polling$.next({}); }), skip(1));
var httpPolling$ = concat(httpRequest$, rePolling$);
return polling$.pipe(switchMap(function () { return httpPolling$; }));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy1wb2xsaW5nLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJpZm8vcnhqcy1wb2xsaW5nLyIsInNvdXJjZXMiOlsibGliL3J4anMtcG9sbGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxZQUE2QixFQUFFLE9BQVc7SUFBWCx3QkFBQSxFQUFBLFdBQVc7SUFDMUUsSUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUNkLEdBQUcsQ0FBQyxjQUFNLE9BQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBakIsQ0FBaUIsQ0FBQyxFQUM1QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNGLElBQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFNLE9BQUEsWUFBWSxFQUFaLENBQVksQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29uY2F0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIHNraXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFBvbGxpbmcgd2hlbiBkYXRhIGlzIHJlc29sdmVkXG4gKiBAcGFyYW0gaHR0cFJlcXVlc3QkIGFueSBodHRwIHJlcXVlc3QuXG4gKiBAcGFyYW0gZGVsYXlNcyBkZWxheSBpbiBtc1xuICpcbiAqIEluc3BpcmUgYnkgaHR0cHM6Ly9ibG9nLnN0cm9uZ2JyZXcuaW8vcnhqcy1wb2xsaW5nL1xuICovXG5leHBvcnQgZnVuY3Rpb24gcG9sbGluZ09uUmVzb2x2ZWQoaHR0cFJlcXVlc3QkOiBPYnNlcnZhYmxlPGFueT4sIGRlbGF5TXMgPSAwKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgY29uc3QgcG9sbGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcbiAgY29uc3QgcmVQb2xsaW5nJCA9IG9mKCcnKS5waXBlKFxuICAgIGRlbGF5KGRlbGF5TXMpLFxuICAgIHRhcCgoKSA9PiBwb2xsaW5nJC5uZXh0KHt9KSksXG4gICAgc2tpcCgxKVxuICApO1xuICBjb25zdCBodHRwUG9sbGluZyQgPSBjb25jYXQoaHR0cFJlcXVlc3QkLCByZVBvbGxpbmckKTtcbiAgcmV0dXJuIHBvbGxpbmckLnBpcGUoc3dpdGNoTWFwKCgpID0+IGh0dHBQb2xsaW5nJCkpO1xufVxuIl19