Se você está escrevendo AngularJS, pode ter visto este erro antes
Error: $digest already in progress
E para evitá-lo, as pessoas mencionaram que você pode fazer o seguinte para verificar se um $ digest já está em andamento.
if (!scope.$$phase) {
// Your Logic
}
Mas esta não é uma maneira preparada para o futuro de fazer isso, nem garante que sua lógica seja executada no próximo loop de resumo, que é provavelmente o que você queria que acontecesse (ou seja, você alterou a variável de escopo para uma string diferente). Se você quiser garantir que sua lógica será executada no próximo loop de resumo, faça algo assim.
$timeout(function() {
// Your Logic
});