throttle-async-rxjs-pipe
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.0 • Public • Published

    throttle-async-rxjs-pipe

    A pipe functions for rxjs 6+ which accepts a 'wait' observable, emits 1 elements of the source stream and waits for an event on the 'wait' observable.

    What does throttleAsync do (in order)?

    1. Get a waitUntil$ observable as parameter
    2. Emit one value (may be configurable in the future)
    3. Wait until waitUntil$ observable emits a value.
    4. If waitUntil$ emits a value, emit another value from the source observable.

    Why is this useful?

    I personally need it for splitting up resize events from the browser into a resize-start and a resize-end observable.

    First, we need an observable of window resize events:

    const windowResize$ = fromEvent(window, 'resize');
    

    We can produce a resize-end observable by

    const windowResizeEnd$ = windowResize$.pipe(debounceTime(500));
    

    But how would you build the windowResizeStart$ observable? This is, where the throttleAsync pipe comes in.
    We need windowResize$ to emit exactly one event and then pause emission
    until windowResizeEnd$ emits a value.

        const windowResizeStart$ = windowResize$.pipe(
            throttleAsync(windowResizeEnd$)
        );
    

    Future Features (eventually)

    • Emit n source events between waitUntil$ observable emissions instead of only one.
      The parameter n should be configureable when instantiating throttleAsync.
    • Make the parameter n dynamic by using the value of the waitUntil$ observable as a number of how many events to emit next.

    Changelog

    [1.1.0] - 2020-04-13

    • Updated Dependencies to fix dependency security issues
    • Improved npm packaging for easier usage

    [1.0.0] - 2018-11-12

    Initial Release

    Features

    • throttleAsync pipe which emits one event and then waits for waitUntil$ observable emissions

    Install

    npm i throttle-async-rxjs-pipe

    DownloadsWeekly Downloads

    6

    Version

    1.1.0

    License

    Apache-2.0

    Unpacked Size

    6.91 kB

    Total Files

    15

    Last publish

    Collaborators

    • bjesuiter