Met*_*ian 10 http-post observable angular2-services angular
有没有办法告诉服务器更新数据而无需订阅?跳过return语句和订阅似乎使http调用变为惰性.
在我的情况下,我的数据库人创建了一堆没有返回任何内容的存储过程,有时我想在我的服务中做这样简单的事情:
public setItem(item: IRequestItem) {
this.http.post('api/items', item);
}
Run Code Online (Sandbox Code Playgroud)
并在我的组件中调用它:
save() {
var comp = this;
this.items.forEach(function(item) {
comp.service.setItem(item)
});
}
Run Code Online (Sandbox Code Playgroud)
相反,我必须在服务中做这样的事情:
public setItem(item: IRequestItem) {
return this.http.post('api/items', item);
}
Run Code Online (Sandbox Code Playgroud)
然后在conponent中像这样调用它:
save() {
var comp = this;
this.items.forEach(function(item) {
comp.service.setItem(item).subscribe(r => console.log(r));
});
}
Run Code Online (Sandbox Code Playgroud)
哪个会返回很多这些:
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
Run Code Online (Sandbox Code Playgroud)
我只是在学习,所以也许我看错了.我可以解释那个Response对象中的某些内容,它会让我知道操作是否失败或成功?或者是否有另一种语法只会返回成功或失败,而不是令人困惑的"无内容"响应?
为了触发的要求,你需要调用subscribe但你并不需要从服务返回请求观察到的,从组件调用它,你甚至可以从服务中订阅。
setItem(item: RequestItem) {
this.http.post('api/items', item)
.subscribe({ error: e => console.error(e) });
}
Run Code Online (Sandbox Code Playgroud)
现在,在以上内容中,服务将在请求完成之前立即返回,但将发出请求并从服务内部记录任何错误。
| 归档时间: |
|
| 查看次数: |
5666 次 |
| 最近记录: |