Execução de código sem bloqueio

A setTimeoutfunçã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.