signature: asQueue(input: Observable[]): Observable
Turn multiple observables into a single observable, values will be emitted in the order of the input observables.
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