【问题标题】:How is snapshotChanges aware of changes?snapshotChanges 如何感知变化?
【发布时间】:2020-02-29 14:12:50
【问题描述】:

我已经安装了@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/firegithub 上是开源的,有人可以指出代码的相关部分吗?

【问题讨论】:

    标签: typescript google-cloud-firestore angularfire2 firefox-developer-tools


    【解决方案1】:

    实际上我错了,现在我可以看到(下面的屏幕截图)来自Zone.js 调度程序的请求大约每分钟一个。

    确实this article的第一段简单回答了我的问题

    Angular 引入了 Zone.js 来处理变更检测。这允许 Angular 来决定何时必须刷新 UI。通常,你不 必须关心这些,因为 Zone.js 可以正常工作。

    【讨论】:

    • @Giulio 你是对的:Cloud Firestore 不使用 Web 套接字进行传输,而是依赖于多路复用的 HTTP/2 调用。它是使用 Web Sockets 的 Firebase 实时数据库(当 Kato 在 2013 回答这个问题时,它仍然被称为“Firebase”)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2021-03-18
    • 2023-03-23
    • 2013-10-10
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    相关资源
    最近更新 更多