A programação assíncrona é um grampo no desenvolvimento de software. É difícil crer que esse concepção de programação só existe desde o século XXI. A linguagem de programação F# foi a primeira entre seus pares a introduzir a programação assíncrona, em 2007.
Outras linguagens uma vez que C#, Python, JavaScript e C++ adicionaram gradualmente suporte para programação assíncrona. A grande questão é: que valor a programação assíncrona agrega aos seus aplicativos?
Nascente cláusula responde a essa e outras perguntas, logo você descobrirá tudo sobre uma vez que usar a programação assíncrona.
O que é programação síncrona?
A programação síncrona refere-se a um programa em sua forma mais básica. Nascente padrão de programação processa as linhas de código em um programa ou script sequencialmente. Ele sempre começa na primeira risco de código em um programa. Em seguida, ele espera até que cada risco de código tenha concluído sua realização antes de passar para a próxima.
O padrão síncrono também inclui código condicional, uma vez que E se e enquanto afirmações. Embora unicamente qualquer código em uma instrução condicional seja executado, o programa ainda será executado sequencialmente.
Exemplo de programa síncrono
const SyncCode = () => {
console.log("This is the first line in the program")
console.log("This is the second line in the program")
console.log("This is the final line in the program")
}SyncCode();
A realização do programa JavaScript supra produzirá a seguinte saída no console:
This is the first line in the program
This is the second line in the program
This is the final line in the program
A saída supra é exatamente o que você deve esperar. O programa começa do topo e espera até que uma risco de código termine antes de passar para a próxima.
O que é programação assíncrona?
A programação assíncrona é o oposto da programação síncrona. O padrão de programação assíncrona processa várias linhas de códigos simultaneamente. Ele não espera até que a risco de código anterior em um programa tenha concluído sua realização antes de passar para a próxima.
A programação assíncrona pode reduzir o tempo de realização pela metade, criando efetivamente computadores mais rápidos.
Exemplo de programa assíncrono
const AsyncCode = () => {
console.log("This is the first line in the program")
setTimeout(() => {
console.log("This is the second line in the program")
}, 3000)
console.log("This is the final line in the program")
}AsyncCode();
A realização do código JavaScript supra produzirá a seguinte saída em seu console:
This is the first line in the program
This is the final line in the program
This is the second line in the program
Se você confrontar a saída do console supra com o programa assíncrono que a gera, verá que há uma discrepância óbvia. A chamada para registro que diz “Esta é a segunda risco do programa” ocorre antes daquela que diz “Esta é a última risco do programa”. No entanto, a saída do console não reflete isso.
Oferecido que o JavaScript é principalmente síncrono, o código no programa supra foi executado sequencialmente. Mas JavaScript suporta programação assíncrona por meio de recursos uma vez que o setTimeout() método.
O setTimeout() O método é um método JavaScript assíncrono que recebe dois argumentos: uma função e um delonga. O delonga é um temporizador (em milissegundos), que atrasa a realização da função. Assim, enquanto o programa supra aguarda os três segundos para executar a função no setTimeout() método, ele passa para a próxima risco no código. Isso resulta na realização da terceira chamada de função antes da segunda.
Tecnologias JavaScript assíncronas
Apesar de setTimeout() mencionado supra, várias tecnologias JavaScript usam programação assíncrona. Essas tecnologias usam o padrão de programação assíncrona para desenvolver aplicativos sem bloqueio mais rápidos. Algumas dessas tecnologias incluem:
Criando programas assíncronos com JavaScript
Existem várias maneiras de mourejar com código assíncrono. O método escolhido deve depender do tipo de aplicativo que você deseja desenvolver. Esses métodos incluem funções de retorno de chamada, promessas e async/await.
Funções de retorno de chamada
Existem duas propriedades importantes de uma função de retorno de chamada. Eles servem uma vez que parâmetros para outras funções e dependem de eventos externos para satisfazer seu responsabilidade. O setTimeout() O método usado no exemplo assíncrono supra é uma função de retorno de chamada. O programa passa uma função de log uma vez que parâmetro (a função de retorno de chamada) e só a executa posteriormente três segundos (o evento).
As funções de retorno de chamada são ótimas para programas pequenos, mas à medida que seus aplicativos crescem, elas podem permanecer muito complicadas muito rapidamente. Isso ocorre porque as funções de retorno de chamada geralmente chamam outras funções de retorno de chamada, criando uma ergástulo de retornos de chamada aninhados.
Usando promessas
JavaScript adicionou suporte para promessas posteriormente funções de retorno de chamada. Eles são uma boa selecção ao fabricar aplicativos maiores. Uma promessa representa o que pode suceder posteriormente uma operação assíncrona. Esse resultado potencial assumirá uma das duas formas: resolvido ou rejeitado. Uma função separada trata cada um desses resultados, eliminando a premência de aninhamento (o problema da função de retorno de chamada). Em vez disso, as promessas encorajam funções em ergástulo que são mais fáceis de usar.
Toda promessa começa com um novo Promessa objeto que tem uma função anônima com o resolver e rejeitar parâmetros. Dentro dessa função, você terá o aplicativo assíncrono, que retornará uma solução se a operação assíncrona for bem-sucedida ou uma repudiação caso contrário.
O logo() função chain lida com o resolver função, e o colher() função chain lida com o rejeitar função. Portanto, não há premência de instruções if aninhadas, uma vez que é o caso das funções de retorno de chamada.
Exemplo de uso de promessas
const PromiseFunction = () =>{
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("this asynchronous operation executed well")
}, 3000)
})
}PromiseFunction().then((result) => {
console.log("Success", result)
}).catch((error) => {
console.log("Error", error)
})
O código supra retorna a seguinte saída no console:
Success this asynchronous operation executed well
Isso ocorre porque a promessa retorna o resolver função, que passa seus resultados para o logo() função. Se a promessa retornar o rejeitar função o programa usa o colher função em vez disso.
Usando Async/Esperar
Se você não quiser fabricar uma ergástulo de promessas ao mourejar com operações assíncronas, tente async/await. Async/await não é uma utensílio assíncrona completamente dissemelhante das promessas, unicamente uma maneira dissemelhante de mourejar com elas. Ele lida com promessas sem usar o método chain. Assim, da mesma forma que as promessas lidam melhor com as operações assíncronas do que as funções de retorno de chamada, async/await tem benefícios sobre as promessas simples.
Existem dois atributos principais de cada função async/await. Eles começam com o assíncrono palavra-chave e o aguardam palavra-chave aguarda o resultado de uma operação assíncrona.
Exemplo de programa assíncrono/esperar
const PromiseFunction = () =>{
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("this asynchronous operation executed well")
}, 3000)
})
}const AsyncAwaitFunc = async () => {
const result = await PromiseFunction();
console.log(result);
}
AsyncAwaitFunc();
O código supra retornará a seguinte saída no console:
this asynchronous operation executed well
Quais são as principais conclusões?
Existem vários pontos importantes que você deve tirar deste cláusula:
- A programação assíncrona é valiosa porque reduz o tempo de espera de um programa, criando aplicativos mais rápidos.
- Uma função de retorno de chamada pode ser síncrona ou assíncrona.
- As promessas oferecem uma maneira melhor de mourejar com operações assíncronas do que as funções de retorno de chamada.
- As funções async/await lidam com promessas de uma maneira melhor do que usar funções de ergástulo.
- Uma função assíncrona/aguarda lida com operações assíncronas de uma maneira que parece síncrona, facilitando a compreensão.
- As funções de seta ajudam você a redigir um código melhor.
Leia a seguir
Sobre o responsável