在Angular中用RxJS实现HttpClient的复杂管链

问题描述 投票:2回答:1

我在RxJS方面没有太多经验,我想在我的Angular服务中用RxJS管道做以下事情。

我试过用iif函数,但我根本没有足够的经验。

Angular版本是 Angular 9 RxJS版本。6.5.5

通过HttpClient检查GET请求的响应是否为true ...... true -> 检查是否可以通过HttpClient访问网站............................................................................................................................................................................................................... true -> set this.isOnline = true ................................................................................................................................................................................................

javascript angular rxjs rxjs5 rxjs6
1个回答
0
投票

试试下面的方法

import { EMPTY } from 'rxjs';
import { concatMap } from 'rxjs/operators';

http.get(api).pipe(
  concatMap(reponseOne => {
    return http.get(accessWebsiteApi).pipe(
      concatMap(responseTwo => {
        this.isOnline = true;
        return http.get(anotherUrl);
      }),
      catchError(errorTwo => {
        this.isOnline = false;
        return EMPTY;
      })
    );
  })
).subscribe(
  responseFromUrl => {
    this.result = responseFromUrl;
  },
  error => {
    console.error("cant get result");
  }
);
© www.soinside.com 2019 - 2024. All rights reserved.