$evalAsync and $applyAsync for different situations.
$ evalAsync : will cancel the expression for the next iteration loop of the current digest loop . One cycle of processing cycles Angular cycle several times until the data is dirty. If the digest cycle is not executed, it will start a new digest cycle (call $apply ) and evaluate the expression (call $eval method) in it. This method is useful if you are calling a function from an Angular scope, but still want to digest the dirty data when the digest cycle is already running, in which case you cannot call $apply .
$ applyAsync : cancel the expression before the next digest cycle . It always starts a new digest cycle after evaluating the expression (calling the $apply method). This method is useful if you often make some sort of utility call (e.g. $http service) outside the Angular area with dirty area data. However, if it starts a digest for each callback, there may be poor performance. Therefore, this method optimizes the process by separating digest cycles among several asynchronous callbacks, which is superior to the $evalAsync method.
Jaytalent
source share