gpt4 book ai didi

angular - Observable.subscribe() 与带有 async/await 的 Promise

转载 作者:行者123 更新时间:2023-12-03 13:54:20 30 4
gpt4 key购买 nike

关闭。这个问题是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 ?

最佳答案

  • 如果您使用该服务来连续获取值,请使用可观察对象。
  • 如果您只需要获取一次数据,请使用 promise 。您需要取消订阅可观察对象,否则会导致内存泄漏。
  • 仅在必要时使用异步等待,以防您的代码造成回调困惑。
  • 关于angular - Observable.subscribe() 与带有 async/await 的 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55883785/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com