异步加载Firebase数据库之前('单击')按钮

时间:2017-01-11 10:11:42

标签: javascript angular asynchronous promise firebase-realtime-database

我在用户单击按钮之前加载我的firebase数据库时遇到问题,并触发了一个过滤和操作数据库中数据的函数。我曾尝试使用promise来异步加载数据,但无济于事。 您可以查看我的网络应用,看看我在这里谈论的内容:https://search-h2-b-employers.firebaseapp.com/

这就是我试图通过承诺来解决这个问题的方法:

视图:

<button class="button1" id="button1" (click)="addFire()">Try it</button>

服务:

@Injectable()
export class DataService {
ninjas: any;

fire(){
  firebase.database().ref('/H-2B_FY2016').on('child_added', (snapshot) => {
    this.ninjas.push(snapshot.val())
    });
}

  fetchData(){
    return new Promise((resolve, reject) => {
      resolve(this.fire)
    });
  }

}

component.ts:

addFire(){

  this.dataService.fetchData().then(this.myFunction())

     //myFunction() is the function that then filters and manipulates the firebase database. 
    //It ends up passing the data into a new array.
  }

我尝试了各种各样的事情并且遇到了各种各样的错误:

  

无法读取&nbspjas&#39;未定义&#34;

  

参数类型任何[]不能分配给参数类型&#39;(值:{})=&gt; {} | PromiseLike&LT; {}&GT;&#39;

最后一个是我现在得到的错误。

帮助将非常感激。感觉就像是我把头撞在墙上。

0 个答案:

没有答案