如果该文件不存在,如何指向另一个文件?

时间:2018-10-05 22:05:15

标签: angular typescript promise httpclient

我正在使用Angular 6,并且试图检查_appconfig.json文件是否在根目录下。如果文件不存在,我想将http.get()调用指向另一个URL。但是,我似乎无法使事情表现得像我想要的那样,并且想知道是否有人可以在这里帮助我。

如果该文件不存在,我该如何更改URL?

configUrl = "_appconfig.json"; 

  constructor(private http: HttpClient) {}

  data: any;

  getConfig(): Promise<configType> {
    return this.http
      .get(this.configUrl)
      .toPromise()
      .then(response => response as configType)
      .catch(this.handleError);
  }

对于它的价值,如果文件确实存在,此行为将按预期进行。

1 个答案:

答案 0 :(得分:3)

这可能是可以帮助您的解决方案。 重要的是要捕获该错误,如果该错误恰好是404错误,则可以确定找不到该文件。

我建议您使用可观察对象而不是应许对象,但是它们也应该以类似的方式工作。

在此示例中,我尝试加载“ test.txt”,如果找不到该文件,则将加载second.json。

private loadMainFile() {
    this.httpClient.get('/asset/test.txt').subscribe(() => {
      // HANDLE file found
    }, (err) => {
      // HANDLE file not found
      if (err.status === 404) {
        this.loadSecondFile();
      }
    });
  }

  private loadSecondFile() {
    this.httpClient.get('/asset/second.json').subscribe(() => {
      // HANDLE file found
    }, () => {
      // HANDLE file not found

    });
  }