@AuraEnabled Annotations for Continuations
- @AuraEnabled(continuation=true)
- An Apex controller method that returns a continuation must be annotated with @AuraEnabled(continuation=true).
- @AuraEnabled(continuation=true cacheable=true)
- To cache the result of a continuation action, set cacheable=true on the annotation for the Apex callback method.
Caching Considerations
It's best practice to set cacheable=true on all methods involved in the continuation chain, including the method that returns a Continuation object. The cacheable=true setting is available for API version 44.0 and higher. Before API version 44.0, to cache data returned from an Apex method, you had to call setStorable() in JavaScript code on every action that called the Apex method.
In this example, the Apex method that returns the continuation, startRequest(), and the callback, processResponse(), both contain cacheable=true in their @AuraEnabled annotation.
// Action method
@AuraEnabled(continuation=true cacheable=true)
public static Object startRequest() { }
// Callback method
@AuraEnabled(cacheable=true)
public static Object processResponse(List<String> labels,
Object state) { }
Here's a table that summarizes the behavior with different settings of the cacheable attribute in @AuraEnabled.
Method Returning Continuation Object Annotated with cacheable=true | Callback Method Annotated with cacheable=true | Valid? | Action can use setStorable() in JavaScript? | Is Action Response Cached on Client? |
---|---|---|---|---|
Yes | Yes | Yes | Yes | Yes |
Yes | No | No (throws an exception) | N/A | N/A |
No | Yes | Yes | No (all methods must have cacheable=true) | Yes |
No | No | Yes |
|
|