我想从我的数据库中获取currentStudentId后,将其存储在我的服务中,这样就可以通过调用getCurrentStudentId()从我的应用程序中的多个组件访问它。
我感到困惑,因为实际的学生对象(包含id)是作为我的数据库中的一个承诺返回的,我不知道如何转换它。我想做的是这个(服务):
currentStudentId: string;
getCurrentStudentId(): string {
if( this.currentStudentId ) {
console.log("Great, the id is already set. Let's simply return it!");
return this.currentStudentId;
}
else {
console.log("The id isn't set yet, so need to get the student from the db first");
this.getStudentCurrent(); // I get the student from the db and return it as a promise
// return ???
}
return ???
}
我的问题是我需要在此功能中返回什么内容?
答案 0 :(得分:0)
经验法则是,如果函数中有异步调用,则使函数异步。因此,您需要将返回类型更改为Promise<string>
,如此
getCurrentStudentId(): Promise<string> {
if(this.currentStudentId) {
return Promise.resolve(this.currentStudentId); // wrap cached value in promise
}
return this.getStudentCurrent()
.then(currentStudent => {
this.currentStudentId = currentStudent.id;
return this.currentStudentId;
});
}
或使用async/await
async getCurrentStudentId(): Promise<string> {
if(this.currentStudentId) {
return this.currentStudentId;
}
let currentStudent = await this.getStudentCurrent();
this.currentStudentId = currentStudent.id;
return this.currentStudentId;
}