【问题标题】:Angular2: Synching two post requestsAngular2:同步两个发布请求
【发布时间】:2017-03-26 12:16:38
【问题描述】:

我有两个需要作为同步调用执行的 ajax 发布请求。 场景是表单创建了两种不同类型的对象,这些对象需要作为 post 请求发送到不同的 API,我必须在 UI 上显示动画,直到两个 API 都将结果返回给 UI。

任何帮助!

编辑以添加代码

  doApproveSingle() {
    //animation part
    this.loading = true
    //call 1
    this._http.post('api/single', this.approvedChanges, contentHeaders).subscribe(resp => { 
    }, error => {
    })
    //call 2
    this._http.post('api/new', this.approveNew, contentHeaders).subscribe(resp => {
    }, error => {
    })
  }

有两个帖子请求我需要在两个调用完成后关闭该动画,这部分需要帮助。

【问题讨论】:

  • 您能否展示您的代码并告诉我们哪些地方不起作用,以便我们为您提供帮助
  • 听起来不像真的需要同步。
  • 请编辑问题并在此处添加代码。 cmets 中的代码不可读。
  • 编辑完成以添加代码
  • 您可以使用 es6 承诺,这将在这种情况下为您提供帮助,它符合您的要求。

标签: javascript ajax post angular observable


【解决方案1】:
  doApproveSingle() {
    //animation part
    this.loading = true
    //call 1
    let obs1 = this._http.post('api/single', this.approvedChanges, contentHeaders)
    .map(resp => { ... });
    //call 2
    let obs2 = this._http.post('api/new', this.approveNew, contentHeaders)
    .map(resp => { ... });
    Observable.zip([obs1, obs2]).subscribe(val => this.loading = false);
  }

如果在各个 HTTP 调用完成后无事可做,则可以省略 .map(...) 部分。

【讨论】:

  • 不知何故它不适用于地图我必须使用订阅才能使其工作
  • 有趣。我自己没有使用 TS,所以我不确定,但如果你这么说的话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多