AngularFire прослушивания для ребенка добавил - PullRequest
0 голосов
/ 02 мая 2018

я хотел бы просто прослушать событие child_added, чтобы получить ТОЛЬКО последний последний ребенок. Идея состоит в том, чтобы запустить угловое приложение (appA), создать ссылку на список и затем ждать.

Из другого приложения (appB) я могу добавить элемент в этот список.

Я хочу, чтобы appB реагировал один раз на этот элемент, добавленный appB

this.itemsRef = this.db.list('gpsAlerts');

this.itemsRef.snapshotChanges(['child_added'])
  .subscribe(actions => {
    actions.forEach(action => {
      console.log(action.type);
      console.log(action.key);
      console.log(action.payload.val());
    });
  });

Но я уже получил все элементы в моем списке при запуске приложения. А также, когда я добавляю элемент из appB, метод вызывается несколько раз. Я ожидаю получить только последний предмет один раз.

Любая идея, я могу это сделать?

Большое спасибо!

1 Ответ

0 голосов
/ 02 мая 2018

Поскольку вы подписываетесь на snapshotChanges, если вы не хотите, чтобы он вызывался несколько раз, вы можете использовать RxJS debounceTime().

Так что в вашем случае это будет выглядеть так:

...
import 'rxjs/add/operator/debounceTime';
...

this.itemsRef.snapshotChanges(['child_added'])
  .debounceTime(500)
  .subscribe(actions => {
    actions.forEach(action => {
      console.log(action.type);
      console.log(action.key);
      console.log(action.payload.val());
    });
  });

Тогда область действия subscribe будет интерпретироваться только через 500 мс после последнего вызова.

...