为什么更新行为主题功能不起作用

时间:2019-07-14 11:05:22

标签: javascript angular ionic-framework rxjs behaviorsubject

updateSubject() {
  this.value = false;
  this.howToUseObservables();
}

此功能会在我按下按钮时触发,但“行为”主题没有触发。下一个为什么?

  value = true;
  constructor() {
    this.howToUseObservables().subscribe(ress => alert('in home ' + ress));

  }
  updateSubject() {
    this.value = false;
    this.howToUseObservables();
  }

  updateInOninle(subject: BehaviorSubject<any>) {
    subject.next('from func online');
  }
  updateInOffline(subject: BehaviorSubject<any>) {
    subject.next('from func offline');
  }
  howToUseObservables(): BehaviorSubject<any> {
    const testSubjec: BehaviorSubject<any> = new BehaviorSubject('test');
    if (this.value === true) {
      this.updateInOninle(testSubjec);
    } else {
      this.updateInOffline(testSubjec);

    }
    return testSubjec;
  }

1 个答案:

答案 0 :(得分:0)

您可能会想,由于alert howToUseObservables BehaviorSubject<any>的响应,即使单击按钮,响应也将运行,您将能够看到每次点击按钮,alert

那不会发生,因为您要从BehaviorSubject<any>返回一个新的howToUseObservables。因此,除非您subscribe使用新的BehaviorSubject,否则您不会看到in home from func offline被警告。

尝试subscribereturn中的BehaviorSubject版本的updateSubject,您将看到响应已登录到控制台。

updateSubject() {
  this.value = false;
  this.howToUseObservables()
    .subscribe(ress => console.log('in home ' + ress));
}

  

这是您推荐的Working Sample StackBlitz