Если файл не существует, как я могу указать на другой? - PullRequest
0 голосов
/ 06 октября 2018

Я использую 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 голосов
/ 06 октября 2018

Здесь может быть решение, которое поможет вам.Важно поймать ошибку, и если ошибка окажется ошибкой 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

    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...