Fluxo não bloqueante do JS
Olá pessoal, ainda sou novo nesse mundo da programação e no meio dos meus estudos me deparei, finalmente, com a tal programação assíncrona do JS. Mas vi conceitos como o async/await, que para mim, servem como saída para mantermos a sequancialidade do fluxo de execução do nosso cód. Daí me vi perdido, pois a assíncronicidade estava sendo "evitada". E para mim, o certo seria ela ser aproveitada e não o contrário. Confesso que estou um pouco confuso com tudo isso, se puderem me explicar mais sobre, agradeço.
Na verdade o async
/await
é não bloqueante, e mantem a asincronissidade.
Ele serve apenas como uma ferramenta para deixar seu codigo mais legível e curto.
Imagine que ele tem um ooder "bloqueante" no sentido de que a próxima linha de codigo irá executar apenas quando o evento acima (conclusão do Promise) for disparado.
Um codigo bloqueante ocupa o processamento enquanto aguarda, e é totalmente proíbido em JavaScript:
let value;
do {
value = document.querySelector('#field').value;
} while (!value)
Esse código irá travar o browser (ou a aba), pois não sobra recursos de processamento para o browser funcionar.
Tenho uns textos que fiz para me ajudarem a aprender melhor!
https://dev.to/urielsouza29/callback-como-entender-45bl
https://dev.to/urielsouza29/promise-em-js-prometa-que-voce-vai-aprender-prometa-5g17
https://dev.to/urielsouza29/async-await-veio-nos-salvar-d91
Olha eu demorei a entender a parte assincrona do JS! Sofri por isso fiz esses textos pra ajudar :)