值在服务器调用之后分配之前使用

value is using before it assigns after the server call

值在服务器调用后分配之前正在使用

/** * 使用来自 cas 服务的患者信息。 */

 getPatientInfo(event: any, affectType:string) {
    this.patientInfo= new PatientModel();
    let headers = new Headers();
    let estCode = localStorage.getItem(AppUtils.DEFAULT_INSTITUTE); // Logged in user default institute
    headers.append('Content-Type', 'application/json');
    this.masterDataService.getPatientInfo(event).subscribe(result =>{this.patientInfo = result,   console.log("1 "+JSON.stringify(this.patientInfo));
    });
    console.log("2"+JSON.stringify(this.patientInfo));
    this.addPerson(affectType);
}

此处控制台消息 1 显示结果,其中 messgae 2 return {} string.

控制台消息类似于

2 {}
1 {"address":null,"categoryCode":0}

如何在 angular2 中等待 serer 调用后的声明

因为 javascript 是异步的,所以它不会等到 observable 订阅一个事件。它继续执行。这就是为什么第二个控制台首先被打印出来的原因。

您可以做的一件事是创建一个函数并在订阅内调用它,以便它在结果解析后执行。

getPatientInfo(event: any, affectType:string) {
      this.patientInfo= new PatientModel();
      let headers = new Headers();
      let estCode = localStorage.getItem(AppUtils.DEFAULT_INSTITUTE); // Logged in user default institute
      headers.append('Content-Type', 'application/json');

      this.masterDataService.getPatientInfo(event).subscribe(result =>{this.patientInfo = result,   console.log("1 "+JSON.stringify(this.patientInfo));
        console.log("2"+JSON.stringify(this.patientInfo));
        this.addPerson(affectType);
      });
}