首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Angular HTTP中lastValueFrom和firstValueFrom是等价的吗?

在Angular HTTP中lastValueFrom和firstValueFrom是等价的吗?
EN

Stack Overflow用户
提问于 2021-10-19 11:06:05
回答 2查看 1.6K关注 0票数 2

在angular中,我们使用HttpClient进行超文本传输协议调用,返回一个observable,如果我们想使用promises,我们可以使用lastValueFrom/firstValueFrom

假设我们有:

代码语言:javascript
运行
复制
async getLast() {
   const get$ = this.http.get(url);
   const res1 = await lastValueFrom(get$);
}
async getFirst() {
   const get$ = this.http.get(url);
   const res2 = await firstValueFrom(get$);
}

res1和res2总是等价的吗?要使用的正确版本是什么?

EN

Stack Overflow用户

发布于 2021-10-19 12:12:46

Angular HTTP client中,是的,它们是。This is why

代码语言:javascript
运行
复制
observer.next(new HttpResponse({
  body,
  headers,
  status,
  statusText,
  url: url || undefined,
}));
// The full body has been received and delivered, no further events
// are possible. This request is complete.
observer.complete();

observer.next(...)之后,同步调用observer.complete()。因为这是一个同步调用,所以使用lastValueFromfirstValueFrom没有区别。

这里唯一的区别是firstValueFrom将在next(...)被调用时解析Promise,而lastValueFrom将在complete()被调用时解析Promise。因为nextcomplete是一个接一个地同步调用的,所以这里实际上没有太大的区别。

然而,这里需要注意的一件事是:如果您使用的是reportProgress = true,那么您将希望使用lastValueFrom,因为您希望捕获生产者发出的最后一个值-即响应或错误。您不希望使用进度状态更新来解析Promise。如果您这样做了,那么您根本就不想使用Promise。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69629634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档