值在服务器调用之后分配之前正在使用
/ ** *从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
中等待答案 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);
});
}