um padrão escuro Angular JS para evitar.

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
});