根据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)。组件不需要知道存储的对象。关于它如何发展的一小部分信息。
如果提供上述内容,是否有推荐的,广泛应用的类型来传递我不熟悉的结果?
选项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());