A setTimeout
função atrasa a execução da função de forma assíncrona.
Para o intervalo de tempo limite, a maioria dos navegadores assumirá como padrão 4 ms, mesmo se você definir como 0.
var defer=function(fn){setTimeout(fn,0);}
Uso:
defer(someFunction);
defer(function()
{
console.log('Code here is queued and not blocking the UI.');
});
Dependendo do que você está tentando fazer e dos navegadores aos quais é necessário oferecer suporte, outras opções podem ser melhores para você.
Essa abordagem é útil para realizar cálculos caros ou renderização de HTML em blocos sem bloquear a atualização do thread de interface do usuário.
Para animações, requestAnimationFrame é a melhor maneira de fazer isso (+ polyfill ).
Web Workers também são muito, muito interessantes, mas o suporte ao navegador é assim e assim no momento em que este artigo foi escrito. Além disso, os Web Workers não têm acesso ao DOM, portanto, você pode confiar a eles tarefas que não precisam manipular os elementos da página.