Как отложить в результате группы по - PullRequest
0 голосов
/ 27 апреля 2019

как я могу получить один элемент за раз (concatMerge) и задержать его из результата group.pipe (toArray ()). я хочу, чтобы каждый элемент выходил из группового массива с задержкой внутри этого группового элемента.

const people = [
  { name: 'Sue', age: 25 },
  { name: 'Joe', age: 30 },
  { name: 'Frank', age: 25 },
  { name: 'Sarah', age: 35 }
];

from(people).pipe(
  groupBy(person => person.age, p => p.name),
  mergeMap(group => zip(of(group.key), group.pipe(toArray())))
).subscribe(console.log);

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

использовать `delay ()

from(people).pipe(
  groupBy(person => person.age, p => p.name),
  concatMap(group => zip(of(group.key), group.pipe(toArray())).pipe(delay(2000)))
).subscribe(console.log);

https://stackblitz.com/edit/rxjs-groupby-key-vals-s8nsjq?file=index.ts

0 голосов
/ 27 апреля 2019

Вы можете запланировать операции с помощью setTimeout команды

setTimeout (() => {
     console.log("Hello from setTimeout");
  }, 1000);

или отписаться:

// Stop listening for location after 10 seconds
setTimeout(() => { locationsSubscription.unsubscribe(); }, 10000);

или подпишитесь снова:

// After 1/2 second, subscribe again.
setTimeout(() => {
  sequence.subscribe({
    next(num) { console.log('2nd subscribe: ' + num); },
    complete() { console.log('2nd sequence finished.'); }
  });
}, 500);

или задержка console.log:

setTimeout (() => {
     console.log("Hello from setTimeout");
  }, 1000);
...