订阅功能无法正常工作

时间:2017-08-23 18:40:46

标签: angular typescript firebase ionic-framework ionic3

在这段代码中,subscribe函数在loadFromDB函数的最后一行之后执行:



  loadFromDB(){
    const loading = this.loadingCtrl.create({
      content: 'pleas wait'
    });
    loading.present();
    this.getInterviewFromDB()
      .subscribe((data) => {
        this.events = data;
        console.log( 'before');
      });
    this.getMeetingsFromDB().subscribe((data)=>{
      this.events.concat(data);
    });
    loading.dismiss();

    console.log( 'after');
  }




加载存在并在从数据库加载任何数据之前解除 这是日志的输出

enter image description here  说明订阅功能下的行在控制台内部执行后执行...可以任何机构向我解释..?!

2 个答案:

答案 0 :(得分:1)

这非常有意义。您正在订阅异步流。你不能指望他们按顺序完成。如果你希望它们同时完成,你可以这样做:

Observable.forkJoin(this.getInterviewFromDB(), this.getMeetingsFromDB())
    .subscribe(res => {
       let interviews = res[0];
       let meetings = res[1];
    })

答案 1 :(得分:0)

这是回调的工作方式。 SaveChanges()将回调函数作为参数。我建议你在继续之前了解回调是什么以及它们是如何工作的。

以下是subscribe工作原理的一些信息:ReactiveX subscribe function

Robin在subscribe的回答中提供了一个很好的解决方案。 forkJoin将多个Observable发出的值连接到一个数组中,并创建一个新的Observable。然后,您可以订阅此Observable,就像Robin在他的示例中所做的那样,获取数组值,这是回调的第一个参数。