Как отменить текущий запрос HttpClient на Angular 6 - PullRequest
0 голосов
/ 02 октября 2018

У меня есть приложение Angular 6, которое позволяет пользователю загружать различные деревья информации из базы данных MySQL.В основном, в пользовательском интерфейсе есть несколько кнопок, которые вызывают следующий метод, когда пользователь щелкает по ним:

getTree(id : number) : Observable <any> {
    let url = `${ConfigService.settings.appURL}/data-tree/${id}`;

    return this.httpClient.get(url)
        .pipe(
            map(this.formatTreeData),
            catchError(this.handleError)
        );
}

Иногда соединение происходит довольно медленно (мы должны протестировать приложение через соединение GPRS) и загружаем однуДерево может занять 5-8 секунд.Я понял, что если пользователь нажимает на другую кнопку до завершения предыдущего вызова, приложение делает еще одну, и возвращаемые данные смешиваются.

Простое решение состоит в том, чтобы заблокировать пользовательский интерфейс, пока вызов не будетзакончил, но мне интересно, есть ли способ отменить текущий вызов и начать новый в этом случае.Есть предложения?

Спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

Просто отписаться на запрос через определенное время

let req = this.getTree().subscribe( ... your code)

req.unsubscribe();
...