【问题标题】:Angular 4.3 HttpClient put doesn't fire [duplicate]Angular 4.3 HttpClient put不会触发[重复]
【发布时间】:2018-04-05 14:16:18
【问题描述】:

我在 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()
}

另一个请求(删除或发布)无需附加 .subscribe() 即可工作。为什么?

【问题讨论】:

  • 不,他们没有。无论采用何种方法,您都需要订阅要发送的 HTTP 请求。
  • 不可能,需要订阅

标签: angular request httpclient put


【解决方案1】:

HttpClient 请求方法(全部)返回一个 Observable:基本上它是一个等待执行的命令链。除非您在该链上调用 subscribe(),否则什么都不会发生。所以this.http.put(...) 只为你准备命令。

如果您来自使用 Promise 的环境,那么这似乎违反直觉,因为 Promise 会在它生效时立即执行。 Observables 是不同的。看看这个short intro on YouTube

【讨论】:

  • 看准了,从来不知道等待电话订阅!
  • 几乎半天时间都在挖掘这个问题。感谢@BeetleJuice 的回答。
猜你喜欢
  • 2018-02-09
  • 2018-02-04
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多