Newer Version Available
Modifying Components Outside the Framework Lifecycle
Use $A.getCallback() to wrap any code that
modifies a component outside the normal rerendering lifecycle, such as in a setTimeout() call. The $A.getCallback() call ensures that the framework rerenders the modified
component and processes any enqueued actions.
You don't need to use $A.getCallback() if your code is executed as part of the framework's call stack; for example, your code is handling an event or in the callback for a server-side controller action.
An example of where you need to use $A.getCallback() is calling window.setTimeout() in an event handler to execute some logic after a time delay. This puts your code outside the framework's call stack.
This sample sets the visible attribute on a component to true after a five-second delay.
1window.setTimeout(
2 $A.getCallback(function() {
3 if (cmp.isValid()) {
4 cmp.set("v.visible", true);
5 }
6 }), 5000
7);Note how the code updating a component attribute is wrapped in $A.getCallback(), which ensures that the framework rerenders the modified component.