O que faz o Zone.js no Angular 2?
Por e baixo dos panos, Angular 2 usa algo chamado Zone.js, que em poucas palavras, intercepta todas as APIs assíncronas no navegador, utilizando-se de uma técnica conhecida como “Monkey Patching”.
Monkey Patching é uma técnica que sobrescreve, estende ou até mesmo suprime o comportamento padrão do código sem mudar o código fonte.
Nós poderíamos chamar setTimeout, conhecido por disparar o mecanismo de detecção de mudanças, e decidir o que ele deve realmente fazer.
Veja um exemplo simples de Monkey Pathing
let originalSetTimeout = window.setTimeout; window.setTimeout = (cb, milliseconds) => {
console.log(‘Intercepting setTimeout…’); originalSetTimeout.call(null, cb, milliseconds);
}
setTimeout(() => { console.log(‘Monkey patching!!!’);}, 1000);
Utilizando-se do Zone.js, é uma das maneiras que o Angular sabe quando atualizar o DOM, poderíamos dizer, que zone.run() é novo $digest().
Mais conhecimento como este, está ao seu alance no meu Curso de Angular