Confira este código :
<a href="#" id="link">Link</a>
<span>Moving</span>
$('#link').click(function () {
console.log("Enter");
$('#link').animate({ width: 200 }, 2000, function() {
console.log("finished");
});
console.log("Exit");
});
Como você pode ver no console, a função "animar" é assíncrona e "bifurca" o fluxo do código de bloco do manipulador de eventos. De fato :
$('#link').click(function () {
console.log("Enter");
asyncFunct();
console.log("Exit");
});
function asyncFunct() {
console.log("finished");
}
siga o fluxo do código de bloco!
Se eu quiser criar o meu function asyncFunct() { }
com esse comportamento, como posso fazê-lo com javascript / jquery? Eu acho que há uma estratégia sem o uso de setTimeout()