У меня есть код, в котором я получаю некоторые данные с помощью HttpClient. Я подписан на метод, который возвращает эти данные. Что, если получение этих данных слишком длинное, например, восемь секунд и когда инициализируется домашний компонент, тогда процесс извлечения данных начинается с помощью метода жизненного цикла ngOnInit. Но что, если пользователь после запуска этого процесса, который занимает 8 секунд, перейдет на другую страницу через 2 секунды? Я не хочу, чтобы подписка продолжалась, потому что она больше не будет нужна, потому что те данные, которые я хочу отображать в компоненте compo, а не на другой странице. Я пробовал это, где с помощью setTimeOut я имитирую, что 8 секунд берут из бэкэнда, но это не работает. Когда я go перехожу на другую страницу, я получаю данные в консоли, поэтому выборка выполняется до конца
constructor(public mainService: MainService) { }
subscription: Subscription;
ngOnInit() {
this.subscription = this.mainService.getAllPosts().subscribe(x => {
setTimeout(() => {
console.log(x);
}, 8000);
});
}
ngOnDestroy() {
this.subscription.unsubscribe();
console.log("destroyed");
}
//service method
getAllPosts() : Observable<any[]> {
return this.http.get<any[]>(this.url);
}