有没有办法告诉服务器更新数据而不订阅?跳过return语句和订阅似乎使http调用变为惰性。
在我的情况下,我的数据库人创建了一堆没有返回任何内容的存储过程,有时我想在我的服务中做这样简单的事情:
public setItem(item: IRequestItem) {
this.http.post('api/items', item);
}
并在我的组件中调用它:
save() {
var comp = this;
this.items.forEach(function(item) {
comp.service.setItem(item)
});
}
相反,我必须在服务中做这样的事情:
public setItem(item: IRequestItem) {
return this.http.post('api/items', item);
}
然后在conponent中这样称呼它:
save() {
var comp = this;
this.items.forEach(function(item) {
comp.service.setItem(item).subscribe(r => console.log(r));
});
}
哪些会返回很多这些:
Response {_body: "", status: 204, ok: true, statusText: "No Content", headers: Headers…}
_body : ""
headers : Headers
ok : true
status : 204
statusText : "No Content"
type : 2
url : "http://localhost:56018/api/items"
__proto__ : Object
我只是在学习,所以也许我看错了。我可以解释那个Response对象中的某些内容,它会让我知道操作是否失败或成功?或者是否有另一种语法只会返回成功或失败,而不是令人困惑的“无内容”响应?
答案 0 :(得分:4)
为了触发请求,您需要调用subscribe
,但不需要从服务返回请求observable并从组件中调用它,您可以从服务中调用subscribe。
setItem(item: RequestItem) {
this.http.post('api/items', item)
.subscribe({ error: e => console.error(e) });
}
现在在上面,服务将立即返回,在请求完成之前,但是将发出请求并从服务中记录任何错误。