Why axios callback changes are displayed in angularjs, without using $apply
I was trying axios library on angularjs and I was surprised when I saw that the changes to $scope
in the axios callback were detected by angular. I thought I had to call $apply
like, for example, when you use setTimeout
.
// axios example
axios.get(url).then((response) => {
// Here I don't need $apply, why??
$scope.axiosResult = response.data;
});
// setTimeout example
setTimeout(() => {
// Here I need $apply for the timeoutResult to appear on the HTML
$scope.$apply(() => $scope.timeoutResult = {message: "timeout!"});
}, 2000)
Do you know why $apply
is not needed in axios?
EDIT:
A comment by georgeawg helped me see that I was using $http
on another place, so I guess the digest cycle triggered by $http
is helping axios callback to be "digested" too.
$q
or$apply
. I think I'm missing something about how angularjs works... – Warren