1.0.1 • Published 6 years ago

rxjs-queue v1.0.1

Weekly downloads
1
License
MIT
Repository
-
Last release
6 years ago

Build Status Coverage Status

Rx asQueue

signature: asQueue(input: Observable[]): Observable

Turn multiple observables into a single observable, values will be emitted in the order of the input observables.

Examples

with the merge operator, once a value is emitted, it will be sent to our pipeline

const results = [{ wait: 0 }, { wait: 2000 }, { wait: 100 }, { wait: 1000 }, { wait: 3000 }];
const example = of(null);
const messages = results.map(result => example.pipe(mapTo(result.wait), delay(result.wait)));
merge(...messages)
  .pipe(
    map(value => {
      console.log(`${value}ms!`);
    })
  )
  .subscribe();

// 0ms ! ... 100ms! ... 1000ms! ... 2000ms! ... 3000ms

with the asQueue operator, we will receive the values in the order of the input observables

const results = [{ wait: 0 }, { wait: 2000 }, { wait: 100 }, { wait: 1000 }, { wait: 3000 }];
const example = of(null);
const messages = results.map(result => example.pipe(mapTo(result.wait), delay(result.wait)));
asQueue(messages)
  .pipe(
    map(value => {
      console.log(`${value}ms!`);
    })
  )
  .subscribe();

// 0ms ! ... 2000ms! ... 100ms! ... 1000ms! ... 3000ms