call definition of $A.enqueueAction(action);

fn: function(cmp, event, helper)
    {
        var action=cmp.get("c.apexMethod");
         action.setParams({ "param1" : 'value1'});
       
         action.setCallback(this, function(response) {
            var state = response.getState();
             if (state === "SUCCESS")
            {
                var result=response.getReturnValue();
                 if(!$A.util.isUndefinedOrNull(result) && !$A.util.inEmpty(result))
                  {
                       //some code here
                   }
            }
            if (state === "NEW")
            {
                console.log("The action was created but is not in progress yet");
            }
           else if (state === "RUNNING")
            {
                console.log("The action is in progress");
               
            }
             else if (state === "ERROR")
            {
                console.log("The action is in progress");
               
            }
             else if (state === "INCOMPLETE")
            {
                console.log("The server didn't return a response. The server might be down or the client might be offline. The framework guarantees that an action's callback is always invoked as long as the component is valid. If the socket to the server is never successfully opened, or closes abruptly, or any other network error occurs, the XHR resolves and the callback is invoked with state equal to INCOMPLETE.");
               
            }
              else if (state === "ABORTED")
            {
                console.log("The action was aborted. This action state is deprecated. A callback for an aborted action is never executed so you can’t do anything to handle this state.");
               
            }
         });
       $A.enqueueAction(action);
      }

How to get all component's attributes value by one call of component.get();

In This article,I explained how to set all component's attributes value by one call.
In the similar way we can get all the componets values by one call of componet.get()

<!--- Lightning Component  ---->
<aura:component>
<aura:attribute name="map" type="Map" default="{str1:null,str2:null,obj:null}"/>
<aura:attribute name="str1" type="String"  default="{!v.map.str1}"/>
 <aura:attribute name="str2" type="String" default="{!v.map.str2}"/>
 <aura:attribute name="obj" type="Contact" default="{!v.map.obj}"/>
</aura:component>




------------Lightning Component Controller--------------------------
fn: function(cmp, event, helper)
    {
        var map=cmp.get("v.map");//top or START of function
           console.log(map.str1);
           console.log(map.str2);
       
}

Counters