Angular 4.3 HttpClient put不会开火

vol*_*kit 5 put httpclient request angular

我在角度4.3服务中得到了这个httpclient请求:

updateTermin(termin: Termin){
  let url = '${this.termineUrl}/${termin.id}';
  this.http
  .put(url, termin, {headers: this.headers})
}
Run Code Online (Sandbox Code Playgroud)

如果我附加一个.subscribe(),它只会被触发:

updateTermin(termin: Termin){
  let url = '${this.termineUrl}/${termin.id}';
  this.http
  .put(url, termin, {headers: this.headers})
  .subscribe()
}
Run Code Online (Sandbox Code Playgroud)

另一个请求(删除或发布)工作而不附加.subscribe().为什么?

Bee*_*ice 15

HttpClient请求方法(所有的)返回一个可观察到:基本上它是等待被执行的命令的一个链.在你打电话subscribe()给那条链之前什么都没发生.所以this.http.put(...)只为你准备命令.

如果你来自一个使用promises的环境,这似乎是违反直觉的,因为一旦它生效,它就会执行.可观察量是不同的.查看YouTube上的简短介绍