值在服务器调用

时间:2017-07-19 06:51:14

标签: angularjs angular-promise angularjs-service

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

/ **   *从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返回{}字符串。

控制台消息就像

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

如何在serer调用之后使语句在angular2

中等待

1 个答案:

答案 0 :(得分:2)

因为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);
      });
}