如何返回这些数据



嗨,我正在开发一个带有Firebase的ionic2应用程序。所以这里我有一个名为 Students-services 的提供程序。我在服务中设置了一个函数,用于通过一个节点并获取值。之后它将显示在数组中。一切都在工作。但是我无法将数据返回到我的 page.ts 文件。它显示未定型。但是,如果我将其放在控制台中,我可以看到所需的值。谁能帮帮我。

这是我在学生服务中的职能。

settropies(userId) {
  let total = 0;
  let result = [];
  let query = this.userProfile.child(userId+'/exams/').orderByKey();
  query.on("value",(snapshot) => {
    snapshot.forEach((childSnapshot) => {
      var key = childSnapshot.key;
      var childData = childSnapshot.val();
      total = total + childData.marks;
      result.push(total);
      this.marksarray = result;  
    }); 
    this.marksarray = result;
    console.log(this.marksarray[1]);
  });
  return this.marksarray;
}

在我的page.ts文件中调用了该函数

console.log(this.studentservice.settropies(studentId));

当你返回时,该数组是未定义的,因为

  query.on("value",(snapshot)=> {

是一个异步事件。

解决此问题的一种方法是使用事件发射器

在您的服务内部 :

   public finished$ = new EventEmitter<any>();
 snapshot.forEach((childSnapshot)=> {
        var key = childSnapshot.key;
         var childData = childSnapshot.val();
         total=total+childData.marks;
         result.push(total);
         this.marksarray=result;  
          this.finished$.emit(result);
      }); 

然后在您的页面中。

    constructor(){
        this.studentservice.$finished.subscribe((result)=>{
            console.log(this.studentservice.settropies(studentId));
       });
    }

相关内容

  • 没有找到相关文章

最新更新