Angular 4 / RxJS,按顺序发送数组的HTTP

时间:2017-05-01 21:01:20

标签: angular rxjs flatmap

尝试按顺序依次发布数组的http项。知道应该使用RxJS flatMap但无法使其工作。基本上我需要这样的东西:

item是名为items的数组的元素,想要遍历数组并发送每个项目。

    this.http.post(url, item)
        .subscribe(
          (response) => {
            // call the same http.post again to send the next item
          },
          (error) => {
            this.app.error(error.json() as Error); // exit
          }         
        )

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

也许尝试concat

Rx.Observable.concat(...items.map(item => this.http.post(url, item)).subscribe(res => doSmthWithResponse());

答案 1 :(得分:0)

  this.http.post(url, item).map(res => res.json())
            switchMap(this.http.post(url1, item).map(res => res.json()))    

答案 2 :(得分:0)

您可以尝试使用from和flatmap

Observable.from(items)
    .flatMap(item => this.http.post(url, item))
    .subscribe({
        res => console.log("your response"),
        error => console.log("your error"),
        () => doSomethingAtEnd()
    });