Angular 4.3 HttpClient put 不触发
Angular 4.3 HttpClient put doesn't fire
我在 angular 4.3 服务中收到了这个 httpclient 请求:
updateTermin(termin: Termin){
let url = '${this.termineUrl}/${termin.id}';
this.http
.put(url, termin, {headers: this.headers})
}
只有在我像这样附加 .subscribe() 时它才会被触发:
updateTermin(termin: Termin){
let url = '${this.termineUrl}/${termin.id}';
this.http
.put(url, termin, {headers: this.headers})
.subscribe()
}
其他请求(删除或 post)无需附加 .subscribe() 即可工作。为什么?
HttpClient
请求方法(全部)return 一个 Observable:基本上它是一个等待执行的命令链。在您对该链调用 subscribe()
之前,什么都不会发生。所以this.http.put(...)
只为你准备了命令。
如果您来自使用承诺的环境,这似乎有悖常理,因为承诺一旦生效就会立即执行。可观察对象是不同的。看看这个 short intro on YouTube
我在 angular 4.3 服务中收到了这个 httpclient 请求:
updateTermin(termin: Termin){
let url = '${this.termineUrl}/${termin.id}';
this.http
.put(url, termin, {headers: this.headers})
}
只有在我像这样附加 .subscribe() 时它才会被触发:
updateTermin(termin: Termin){
let url = '${this.termineUrl}/${termin.id}';
this.http
.put(url, termin, {headers: this.headers})
.subscribe()
}
其他请求(删除或 post)无需附加 .subscribe() 即可工作。为什么?
HttpClient
请求方法(全部)return 一个 Observable:基本上它是一个等待执行的命令链。在您对该链调用 subscribe()
之前,什么都不会发生。所以this.http.put(...)
只为你准备了命令。
如果您来自使用承诺的环境,这似乎有悖常理,因为承诺一旦生效就会立即执行。可观察对象是不同的。看看这个 short intro on YouTube