关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
2年前关闭。
Improve this question
在 Service
中考虑以下两种方法用于查询网络服务:
getAssessmentById(id: number): Observable<MotorAssessorReport> {
const url = environment.endPoints.assessment.base +
environment.endPoints.assessment.assessmentById + id;
return this.httpClient.get<MotorAssessorReport>(url)
}
async getAssessmentByIdAsync(id: number): Promise<MotorAssessorReport> {
const url = environment.endPoints.assessment.base +
environment.endPoints.assessment.assessmentById + id;
const data = await this.httpClient.get<MotorAssessorReport>(url).toPromise();
return data;
}
第一种方法,
getAssessmentById
返回 observable
.第二种方法,getAssessmentByIdAsync
, 返回 promise
.subscribeToAssessment() {
this.assessmentService.getAssessmentById(this.assessmentId).subscribe(result =>
{
this.assessment = result;
});
}
async fetchAssessment() {
this.assessment = await this.assessmentService.getAssessmentByIdAsync(this.assessmentId);
}
我一直使用第一种方法,返回
Observable<T>
,并订阅我的调用代码。我最近才真正开始明白,只有当您期望返回多个结果时,才应该真正使用这种方法。换句话说,当使用
Promise<T>
时,回调被调用的最大数量,只有一次。由于我一直期望我的服务器总是只返回一次,我的方法是否错误,我应该使用
Promise<T>
方法,结合 async/await
?
最佳答案
关于angular - Observable.subscribe() 与带有 async/await 的 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55883785/