Observable中返回的对象的合适模式和类型 经过一次手术后

问题描述 投票:1回答:1

根据Angular guide,我应该返回发布的对象。这在示例中是有意义的,因为我们希望使用已保存到DB的实体。

在我的特定情况下,我对我发布的反对意见不感兴趣。事实上,该对象是一个由一堆无关的垃圾组成的包装器。在后端,有一系列由帖子启动的无效调用。目前,我订阅了该服务,这是一个基于消防而忘记的逻辑。

为了提高质量,我想告诉组件所请求的操作顺利通过代码,就像这样。我控制API的端点,这样我就可以在那里生成一个数字或一个对象。

fireAndForget(junk: Junk) : number {
  ...
  this.http.post<number>(url, body)
    .pipe(catchError(this.handleError))
    .subscribe(yey => return yey, neh => return -1);
}

在组件中,我希望能够得到结果并相应地做出相应的反应。

const junk: Junk = { ... };
const result = this.service.fireAndForget(junk);
if(result > 0) doStuff(); else doOtherStuff();

但是,我无法摆脱我打破模式或篡改最佳实践的感觉。我有一种预感,我应该返回一个可观察的(在指南中仍然是类型编号而不是对应于Hero []的Junk)。组件不需要知道存储的对象。关于它如何发展的一小部分信息。

如果提供上述内容,是否有推荐的,广泛应用的类型来传递我不熟悉的结果?

angular typescript asp.net-core rxjs observable
1个回答
0
投票

选项1:

如果您对post方法的返回类型不感兴趣,那么您可以返回一个数字以确保返回类型相同:

fireAndForget(junk: Junk) : number {
  ...
  this.http.post<number>(url, body)
    .pipe(catchError(this.handleError))
    .map(yey => return 1);
}

在组件中,您可以订阅方法调用,如下所示:

const junk: Junk = { ... };
const result = this.service.fireAndForget(junk)
               .subscribe(yeh=>doStuff(),neh=>doOtherStuff());

选项2:

如果您不关心返回类型,并希望区分请求是否成功处理。以下方法将起作用:

fireAndForget(junk: Junk) : number {
  ...
  this.http.post<number>(url, body)
    .pipe(catchError(this.handleError))
}

在您的组件中:

const junk: Junk = { ... };
const result = this.service.fireAndForget(junk)
               .subscribe(yeh=>doStuff(),neh=>doOtherStuff());
© www.soinside.com 2019 - 2024. All rights reserved.