【发布时间】:2022-01-11 06:40:16
【问题描述】:
提出请求的最佳方式是什么?
我在project.service.ts 中有一个http request 方法。我可以使用以下结构提出请求:
getProjectById(projectId: number) {
return this.http.get<Project>(`${this.url}/search/projects/${projectId}`).toPromise();
}
并在project.component.ts 中使用以下结构调用它:
async getProject(projectId: number) {
this.isLoading = true;
try {
this.project = await this.api.projects.getProjectById(projectId);
} finally {
this.isLoading = true;
}
}
但我也可以这样提出请求:
async getProjectById(projectId: number) {
return await this.http.get<Project>(`${this.url}/search/projects/${projectId}`).toPromise();
}
或者这个:
getProjectById(projectId: number): Observable<Project> {
return this.http.get<Project>(`${this.url}/search/project/${projectId}`);
}
但我必须subscribe 才能使用此功能。
【问题讨论】:
-
您的第二个
getProjectByIdsn-p(带有async关键字)与第一个sn-p 的工作方式完全相同,那么为什么还要让它变得更复杂呢? -
@Bergi 我只想知道它们之间的区别。例如,如果我使用第二个
getProjectById,是否仍然需要在我的project.component.ts中使用异步?还是通过第一种带有异步功能的方法更好? -
@Bergi 不仅如此,使用
Observables更好吗? -
简短回答 async await 是 promise 的语法糖,没有任何改变,它们在幕后的工作方式完全相同
-
@RobertodeLeón 没有区别。它仍然返回项目响应的承诺,是的,您仍然必须使用
getProject中的await处理它。至于 observables 与 promises,这是非常基于意见的,之前也是 has been asked multiple times。
标签: javascript angular typescript http async-await