In AngularJS, the $timeout
service is used to execute a function after a specified delay. It's often used for delaying the execution of code or for triggering code asynchronously after a certain time interval. Here's how you can use $timeout
for asynchronous operations in AngularJS:
Inject $timeout
Service: Make sure to inject the $timeout
service into your controller, service, or wherever you need to use it.
javascriptangular.module('myApp').controller('MyController', function($scope, $timeout) {
// Controller code here
});
Basic Usage: Call the $timeout
function with a callback function as the first argument and the delay (in milliseconds) as the second argument. This callback function will be executed after the specified delay.
javascript$timeout(function() {
// Code to be executed after delay
}, 1000); // 1000 milliseconds (1 second) delay
Returning a Promise: $timeout
can also return a promise, which resolves when the specified delay has elapsed. This can be useful for chaining asynchronous operations or executing code after the delay.
javascript$timeout(function() {
// Code to be executed after delay
// This will execute after 1 second
}, 1000).then(function() {
// Code to be executed after the timeout function completes
// This will execute after the above code executes
});
Canceling a Timeout: $timeout
returns a promise, which can be used to cancel the timeout before it occurs using the cancel()
method.
javascriptvar timeoutPromise = $timeout(function() {
// Code to be executed after delay
}, 1000);
// Cancel the timeout
$timeout.cancel(timeoutPromise);
Remember, $timeout
is wrapped in the AngularJS digest cycle, so any changes made to AngularJS models within the $timeout
function will trigger a digest cycle and update the UI accordingly.
Here's a basic example demonstrating the use of $timeout
in a controller:
javascriptangular.module('myApp').controller('MyController', function($scope, $timeout) {
$scope.message = "Initial Message";
$timeout(function() {
$scope.message = "Message after delay";
}, 2000); // Change message after 2 seconds
});
In this example, the message will change to "Message after delay" after 2 seconds.