Как snapshotChanges знает об изменениях? - PullRequest
1 голос
/ 29 февраля 2020

У меня установлена ​​@angular/fire (последняя версия 5) зависимость.

  getCustomersList() {
    this.customerService.getCustomersList().snapshotChanges().pipe(
      map(changes =>
        changes.map(c =>
          ({ key: c.payload.doc.id, ...c.payload.doc.data() })
        )
      )
    ).subscribe(customers => {
      this.customers = customers;
    });

Если я открою с F12 вкладку Сеть Firefox, я не вижу никакой сетевой активности, даже если я «волшебным образом» получу изменение (например, из другого экземпляра браузера). Но я предполагаю, что клиент приложения (живущий в браузере) периодически опрашивает удаленную базу данных: это как-то подтверждено? Какой механизм - под прикрытием - с помощью которого он может подписаться на изменения, сделанные в других местах? Почему я не могу визуализировать это в инструментах разработчика браузера? Поскольку @angular/fire является открытым исходным кодом на github , может кто-нибудь указать мне на соответствующую часть кода?

1 Ответ

0 голосов
/ 29 февраля 2020

На самом деле я был не прав, теперь я вижу (скриншот ниже) запросы, поступающие примерно раз в минуту из зоны . js планировщик.

Действительно, первый абзац эта статья просто отвечает на мой вопрос

Angular введена зона. js для обработки обнаружения изменений. Это позволяет Angular решать, когда обновлять пользовательский интерфейс. Обычно вам не нужно заботиться об этом, потому что Zone. js просто работает.

enter image description here

...