Angular Http получает 404 стопа дальнейших вызовов - PullRequest
0 голосов
/ 26 мая 2018

Вот латунные гвозди.У меня есть этот сервисный звонок

this.searchTerm.valueChanges.debounceTime(400)
    .filter(searchTerm => { return searchTerm.length >= 3;})
    .distinctUntilChanged()
    .switchMap((searchTerm) => this._scryfallService.getCards(searchTerm))
    .subscribe(data => this.cardSearchResults = data.data,
                err => this.cardSearchResults = [];
    );

И его оборотная сторона выглядит следующим образом

getCards(term: string): Observable<any> {
    let url = this.scryFallEndpoint + 'search?q="' + encodeURI(term) + '"+unique:prints+not:digital' ;
    return this._http.get(url)
    .map(res => res);
}

Служба, на которую я звоню, вернет 404, если не сможет найти что-то, используяваши условия поиска.Если я получаю ошибку 404, поиск перестает работать полностью, и мне нужно обновить страницу, чтобы выполнить другой поиск.Если поиск успешен, я могу просто перепечатать его в окне поиска, и он отлично выполняет другой вызов.

Резюме: Когда сервисный вызов 404s, кажется, что он предотвращает любые другие вызовы

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 27 мая 2018

вы должны перехватить любую ошибку, которую выдает scryfallService, и вернуть значение, которое может быть обработано в дальнейшем.в противном случае наблюдаемое будет завершено.

this.searchTerm.valueChanges.debounceTime(400)
    .filter(searchTerm => { return searchTerm.length >= 3;})
    .distinctUntilChanged()
    .switchMap((searchTerm) => this._scryfallService.getCards(searchTerm).catch(err => Observable.of('error happened but please continue')))
    .subscribe(data => this.cardSearchResults = data.data,
                err => this.cardSearchResults = [];
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...