Angular 4.3 HttpClient put 不触发

标签 angular request httpclient put

<分区>

我在 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() 即可工作。为什么?

最佳答案

HttpClient 请求方法(所有这些)返回一个 Observable:基本上它是一个等待执行的命令链。在您对该链调用 subscribe() 之前,什么都不会发生。所以 this.http.put(...) 只为您准备命令。

如果您来自使用 promise 的环境,这似乎有悖常理,因为 promise 一旦生效就会立即执行。可观察对象是不同的。看看这个 short intro on YouTube

关于Angular 4.3 HttpClient put 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46916347/

相关文章:

java - Httpclient 4.3 阻塞连接池

java - 使用 HttpClient 4.1.1 避免循环重定向

javascript - Meteor发布错误检测

JavaScript 在两个范围值之间生成 100 个步长

javascript - Node.js:如何仅在图像发生变化时请求图像

javascript - 从 Node.JS 中的两个网站请求 RSS 提要

java - Servlet 接收基于 XML 的请求,然后创建一个新的 XML 文件作为响应发回

html - 由于向描述中添加图标按钮而导致未对齐后垂直对齐垫扩展面板标题

Angularfire2/Firebase - 在运行时使用 angularfire2 列表订阅查询不起作用

c# - 如何处理传输编码 : chunked when downloading a file with . NET Core HttpClient.PostAsync