У меня есть служба, которая предоставляет мне возможность наблюдать через запрос на получение http и следующую операцию с картой. В моем компоненте я подписываюсь на наблюдаемый в методе ngOnInit. Поскольку у меня есть функциональность разбиения на страницы, я хотел бы запустить другой запрос службы, когда пользователь нажимает на другую страницу страницы. Как я могу это достичь? Должен ли я снова подписываться на услугу в новом методе или можно инициализировать наблюдаемый внутри компонента, чтобы я мог использовать его любым способом?Угловой запрос на 2 секунды для наблюдения
export class ListItemsComponent implements OnInit {
private _listItems = [];
page = 1;
constructor(private _listItemsService:ListItemsServiceService) { }
ngOnInit() {
this._listItemsService.getListItems (this.page)
.subscribe(listItems => this._listItems = listItems);
}
pageChange(page){
this._listItemsService.getListItems (this.page)
.subscribe(listItems => this._listItems = listItems);
}
}
Мне нравится ваш подход. У меня вопрос, что произойдет, если пользователь откроет одну страницу и сразу откроет другую. И первый запрос будет завершен позже второго по некоторым причинам. Вы знаете какой-либо метод rxjs для «забывания» предыдущего запроса? – Nikolai
Это определение наблюдаемого, разве это не так? Наблюдаемый останавливает один запрос, когда другой уволен. – MeMeMax
'pageChange (страницы) { this.http.get (this.baseUrl + page.id) .subscribe (пункты => { this.dataStore.listItems = предметы; this._listItems.next (предметы); }); } ' Я думаю, что если вы вызовете этот метод 3 раза, каждый новый вызов не отменяет предыдущий. И все обратные вызовы onSuccess будут запущены после завершения каждого запроса. Например, если вы вызываете его на 2 страницы, а затем на 3, а запрос на 2 страницы заканчивается позже, чем на 3. На экране пользователя мы увидим результаты для 2-х страниц. – Nikolai