Observable.subscribe正文不更新变量

时间:2018-03-06 21:31:04

标签: typescript angular5

我有一个使用id:null初始化的Organization实例。在以下代码中,我检测到这种情况以确定是否在服务上调用create或update:

private saveOrganisation() {
  console.log('1 ' + JSON.stringify(this.organisation));

  if (this.organisation.id === null) {
    // we are creating a new one
    this.organisationService.create(this.organisation).subscribe(res => {
      console.log('2 ' + res);
      console.log('3 ' + JSON.stringify(this.organisation));
      return this.organisation = res;
    });
   } else {
     this.organisationService.update(this.organisation).subscribe(res => {return this.organisation = res;});
   }
     console.log('4 ' + JSON.stringify(this.organisation));
}

我将此实例作为由" this.organisation"引用的成员变量。在订阅的主体中,我设置了#34; this.organisation"随着回应。

  1. 第一个控制台日志显示this.organisation id:null(正如预期的那样)
  2. 第二个控制台日志显示res id:1(按预期方式)
  3. 第三个控制台日志显示this.organisation id:1(正如预期的那样)
  4. 第四个控制台日志显示this.organisation id:null(不是预期的)
  5. 第四个console.log在2和3之前触发,而我知道subscribe是异步的,我发现虽然我在日志中看到2和3,但id仍然没有更新,后续调用saveOrganisation()显示我得到的空值为4(在1和2中)。我想知道this.organisation 曾经更新。

    谁能告诉我发生了什么?

0 个答案:

没有答案