值在服务器调用之后分配之前使用
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);
});
}
值在服务器调用后分配之前正在使用
/** * 使用来自 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);
});
}