как получить последний результат асинхронной операции для моей функции подписки и отменить предыдущие события?
У меня есть кнопка, которая вызывает функцию makeRequest
, которая возвращает Observable
следующим образом:
makeRequest() {
return Observable.create((observer) => {
let uniqueId = this.uniqueId++;
setTimeout(() => {
console.log('[makeRequest] complete request ' + uniqueId);
observer.next({ save: true, id: uniqueId });
observer.complete();
}, 5000);
});
}
В моей функции подписки я получаю следующие результаты:
this.makeRequest().subscribe(r => {
console.log({ r });
});
Как получить последнее событие от makeRequest
, даже если я нажимаю несколько раз на кнопку?
- button clicked (uniqId = 0)
- button clicked (uniqId = 1)
- button clicked (uniqId = 2)
- subscribe(r => r // is uniqId = 2)
все мои предыдущие события игнорировались, но не это.