angular - 如何等待 FirebaseListObservable 的响应

标签 angular typescript firebase angularfire2

我一直在使用 Angularfire2 制作 Angular2 应用程序。从 Firebase 检索数据时,我遇到了有关 FirebaseListObservable 的问题。这是我的代码。

this.requests = this._af.database.list('/requests');

此后不久,我记录了这个变量。

console.log(this.requests);

然后我得到了一个未定义的,但我想等待这个请求的响应,因为 this.requests 在这段代码中始终是未定义的。我希望你教我如何等待 firebase 请求的结果。抱歉我的英语不好。

最佳答案

由于从 Firebase 检索数据是异步的,因此您需要在请求的数据传入时“订阅”该事件。在不再使用连接后关闭(取消订阅)连接非常重要,以避免 further problems 。这可以通过以下代码来实现:

this.requests = this._af.database.list('/requests')
  .subscribe(data => {
    data.forEach(obj => {
      console.log(obj.$key);
      console.log(obj.$value);
    });
    this.requests.unsubscribe();
});

如果您想保留连接,因为您正在更新数据,则应该省略 this.requests.unsubscribe(); 而是放置

ngOnDestroy(){
  this.requests.unsubscribe();
}

在您的组件中,因此当您的组件被销毁时连接会关闭。

关于angular - 如何等待 FirebaseListObservable 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40878997/

相关文章:

php - PHP 与 firebase 的连接如何工作?

android - Cordova FCM - 构建错误 : Failed to apply plugin [id 'com.google.gms.google-services' ]

angular - 是否有 'smoother' 编码进度条的方法?

javascript - Angular2 构建过程失败

angular - 无法读取未定义的属性 'next'

git - 当我根据提交消息提交时,如何更改 package.json 版本?

angular - 空注入(inject)器错误 : No provider for AngularFirestore

typescript - 是否有可互操作的浏览器扩展对象的@types?

javascript - 从 TypeScript 类型定义或 GraphQL 片段定义生成 JavaScript 空对象

javascript - 如何检查数据是否写入firebase数据库?