Считайте, что у вас есть какой-то компонент, например автозаполнение, которое отправляет запрос GET на сервер:
...
someObject = create();
vm.search = someFactory.getHttp(params).then(result => {
someObjet.prop = result;
});
vm.$onDestroy = () => {
someObject = null;
}
Если компонент уничтожен во время ожидания запроса, обратный вызов выдаст ошибку js.
Я знаю, что в этом конкретном примере я могу решить эту проблему с помощью простого If, однако совершенно очевидно, что лучше отменить этот запрос:
var canceler = $q.defer();
vm.search = someFactory.getHttp(params, canceler)...
vm.$onDestroy = () => {
canceler.resolve();
someObject = null;
}
Это прекрасно работает, но наличие такого кода в каждом компоненте кажется странным. Я хотел бы иметь что-то вроде:
vm.search = someFactory.getHttp(params, $scope.destroyPromise)
Но, похоже, такого не существует ...
Вопрос: есть ли простой способ отменить запросы на уничтожение компонента?
как в Angularjs, так и в Angular